data -->

Desplegar Kubernetes sobre VMware vSphere

Posted by José Manuel Hernández on

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