in VMware Kubernetes Docker ~ read.

Desplegar Kubernetes sobre VMware vSphere

alt

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:[email protected]'  
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

comments powered by Disqus