Inicio > WebLogic > Introdución a Kubernetes: Orquestando dockers

Introdución a Kubernetes: Orquestando dockers

Resultado de imagen de kubernetesEn anteriores entradas vimos una introducción a docker, además de cómo crearlos y manternerlos.

Pero, ¿cómo los gestionamos y utilizamos? Hay diferentes herramientas para orquestar docker, como swarn, apache mesos o kubernetes. En esta entrada nos vamos a centrar en la herramienta que google donó al software libre en 2015: kubernetes. A Google siempre le ha gustado hacer trabajar a otros y que éstos le aporten contenidos: maps, youtube, etc…. Y no iba a ser diferente con kubernetes, una de las herramientas que tiene ahora mismo más desarrolladores y commits.

Kubernetes consta de diferentes componentes que nos ayudan a gestionar nuestros contenedores docker, como dns, red, proxy, monitorización, apis, scheduler, etc. La instalación es bastante complicada, pero vamos a ver dos formas que nos la facilitan: minikube y kubeadm.

Minikube levanta máquinas virtuales con todos los componentes para que funcione kubernetes. Podemos elegir virtualbox, kvm, hyperv… Es muy sencillo y nos servirá para probarlo. Es poco operativo porque levanta los contenedores dentro de las máquinas virtuales, con la limitación que pueden tener éstas de memoria o espacio.

Kubeadm nos levanta en local contenedores docker con los componentes de kubernetes y se conecta al demonio local de docker.

En avanttic tenemos un cluster con dos nodos de kubernetes instalados con kubeadm, los llamamos kubernetes1 y kubernetes 2, vamos a ver unos ejemplos.

Selection_027

Primero vamos a ver unos conceptos importantes:

  • Deployment: es el contenedor docker que vamos a desplegar que contiene la aplicación. Por ejemplo un servidor web.
  • Pod: un pod es cada unidad de Deployment que tenemos funcionando. Con kubernetes gestionamos cuantos pods queremos levantar de cada aplicación.
  • Services: son los servicios que exponemos que hacen referencia a los PODS

Vamos a desplegar una aplicación, por ejemplo, un servidor web o un weblogic que podemos descargar de nuestro repositorio docker de avanttic https://hub.docker.com/u/avanttic. Como estos últimos son privados por tener licencias, vamos a probar con un apache.

Desplegamos un contenedor docker de httpd y lo llamamos apache. Desplegamos 4 pods:

Selection_028

Kubernetes se encarga de gestionar donde se despliega el docker, de asignarle la red, etc.

En pocos segundos vemos como ha levantado los 4 pods y ya están disponibles:

Selection_035

Si nos conectamos individualmente a los nodos de kubernetes, vemos que ha levantado dos pods en el nodo1, los otros 2 están en el nodo2.

Selection_036

Si entramos en cada pod nos da la ip accesible. Además, con la ventaja de poder crear un servicio que nos balancee entre todos los pods, haya los que haya, levantemos más o menos dinámicamente.

Para crear el servicio del balanceador solo tenemos que definir el nombre, la aplicación, el puerto que se expone y a cuál apuntamos. Vamos a ver otra forma de crearlos, con fichero yaml:

{
“kind”: “Service”,
“apiVersion”: “v1”,
“metadata”: {
“name”: “ejemplo-balanceador”
},
“spec”: {
“ports”: [{
“port”: 8080,
“targetPort”: 80
}],
“selector”: {
“app”: “apache”
},
“type”: “LoadBalancer”
}
}

kubectl create -f balanceador.yaml
service “ejemplo-balanceador” created

Vemos que lo está creando:

Selection_037

Podemos ver una descripción del servicio donde él solo ya apunta los pods que hay levantados:

kubectl describe services ejemplo-balanceador

Name: ejemplo-balanceador
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=apache
Type: LoadBalancer
IP: 10.98.237.237
Port: <unset> 8080/TCP
NodePort: <unset> 30792/TCP
Endpoints: 10.32.0.2:80,10.32.0.3:80,10.40.0.3:80 + 1 more…
Session Affinity: None
Events: <none>

Ahora si accedemos a la IP 10.98.237.237 nos balancea entre todos los pods.

También podemos ver en los logs de cada pod como balancea.

Selection_038Selection_039

En resumen, sólo nos tenemos que preocupar de levantar un docker con nuestra aplicación y Kubernetes gestiona la red, el DNS, el número de instancias que queremos tener levantadas, el balanceo, etc.

En próximos posts veremos funciones muy interesantes sobre cómo ampliar el cluster de Kubernetes con servicios cloud como Amazon, Google Cloud, Azure, y el autoescalado de aplicaciones en función de CPU, memoria, usuarios, etc.

Categorías:WebLogic Etiquetas: , , ,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: