El uso de contenedores empieza cada vez a estar más extendido, sobre
todo en entornos de desarrollo gracias a la agilidad y otras ventajas
que estos nos aportan:
- Despliegue rápido de aplicaciones: Una vez creado el contenedor con nuestra aplicación, los sucesivos despliegues son extremadamente rápidos.
- Portabilidad entre máquinas: Una aplicación puede construirse dentro de un contenedor independiente de la versión del Kernel, sistema operativo, etc., este contenedor puede transferirse a otra máquina que corra Docker y funcionar sin problemas.
- Eficiencia: Las imágenes Docker son tremendamente ligeras, al no duplicar los sistemas operativos se produce un ahorro significativo en cuanto a almacenamiento y memoria.
- Control de versiones: Puedes controlar las sucesivas versiones de tu contenedor con cualquier software de control de versiones y hacer roll-back a versiones previas en caso de necesidad.
- Repositorio: Podemos usar un repositorio para compartir contenedores en nuestra organización o públicamente.
Cuando nuestra plataforma Docker empieza a ser muy grande y
necesitamos una mejor gestión de nuestros contenedores a través de
múltiples nodos, Kubernetes es nuestra solución.
Kubernetes es un sistema para la gestión de
aplicaciones en contenedores a través de múltiples hosts, proporciona
mecanismos básicos para la implementación, mantenimiento y escalado de
aplicaciones.
A continuación vamos a ver el modo de desplegar Kubernetes sobre nuestra infraestructura VMware existente.
Prerrequisitos (Linux)
- Es necesario disponer de las credenciales de administrador de tu ESXi o vCenter.
- Debes de tener instalado GIT y Docker.io
- Necesitas tener Go (versión 1.2 o posterior) instalado: [www.golang.org]
- Necesitas incluir GOPATH dentro de tu PATH:
export GOPATH=$HOME/src/go mkdir -p $GOPATH export PATH=$PATH:$GOPATH/bin
Instalar govc para gestionar tu ESXi/vCenter:
go get github.com/vmware/govmomi/govc
Descargar e instalar Kubernetes:
git clone https://github.com/kubernetes/kubernetes.git cd kubernetes make release
Para mas detalles del proceso de instalación: http://releases.k8s.io/release-1.1/build/
Descargamos una imagen de Debian 7.7 VMDK que usaremos como base:
curl --remote-name-all https://storage.googleapis.com/govmomi/vmdk/2014-11-11/kube.vmdk.gz{,.md5} md5sum -c kube.vmdk.gz.md5 gzip -d kube.vmdk.gz
Para facilitar la carga de las variables podemos crear un fichero llamado envvars.sh con el siguiente contenido:
export GOVC_URL='user:pass@hostname' export GOVC_INSECURE=1 # Si usamos certificado de vmware autofirmado. export GOVC_DATASTORE='nombre_de_datastore' export GOVC_RESOURCE_POOL='Nomnre_de_cluster' export KUBERNETES_PROVIDER=vsphere export GOVC_GUEST_LOGIN='kube:kube'
Si tienes varias interfaces de red es necesario especificar la red
que usarán nuestro kubernetes-master y los minions, para ello vamos a
identificar las redes que tenemos:
govc ls /[DatacenterName]/network
Una vez identifiquemos la red que vamos a usar añadimos la siguiente línea a nuestro fichero de variables:
export GOVC_NETWORK='LAN'
Cargamos las variables:
source envvars.sh
Si necesitas ajustar otros parámetros edita el fichero cluster/vsphere/config-common.sh
Importamos el VMDK en nuestro datastore:
govc import.vmdk kube.vmdk ./kube/
Comprobamos que el VMDK está correctamente subido:
govc datastore.ls ./kube/
Ahora a proceder a levantar nuestro clúster.
cd kubernetes # Entramos en el directorio donde hemos extraído kubernetes cluster/kube-up.sh # Levantamos el clúster
Veremos como en nuestro vCenter o ESXi se empiezan a desplegar un
kubernetes master y cuatro minions. Una vez terminado el despliegue la
salida del script kube-up.sh mostrará las IPs de las máquinas
desplegadas y podremos acceder a ellas vía SSH (usuario kube password kube).
Una vez finalizado este proceso podremos conectarnos a nuestro master y desplegar nuestros contenedores.
Enjoy!
José Manuel Hernández
>Ref: http://kubernetes.io