Kubernetes
Esta página tiene apuntes sobre mis indagaciones en esta tecnología. Muy probablemente esté incompleta la información y puede que haya algunos malentendidos.
Contenido
Introducción
Kubernetes es una capa de administración de la ejecución de contenedores docker. Tiene una estructura de un master y varios servidores de ejecución de contenedores llamados minions. A través del master se gestiona la subida de imagenes y la ejecución de contenedores, y es el propipio master el que decide en que minion se va a ejecuar cada contenedor.
Los contenedores se agrupan en pods, y estos contenedores agrupados se ejecutan siempre en la mismo minion, lo cual es interesante cuando los contenedores tienen que compartir el mismo almacenamiento, o la misma red.
Como probarlo
En la página de Getting Started de kubernetes ofrecen varias formas de probarlo. La que me ha parecido más sencilla por estar más familiarizado es la de vagrant, que despliega un master y N minions para hacer pruebas. Explican muy bien como se hace la instalación y solo hace falta tener instalado Vagrant y Virtualbox para tener un cluster de kubernetes funcionando. Eso si, los servidores virtuales con el servicio de kubernetes son Fedora ,y se instalan usando Saltstack
Trabajando con Kubernetes
Para la plataforma de pruebas que se instala con Vagrant viene ya preparado con un comando para hacer las pruebas. El comando de control es
$ cluster/kubectl.sh
Pero también podemos usar el kubectl que tengamos instalado de antes, ya que la configuración al final se almacena en ~/.kube/config.
Si tenemos instalado gcloud, como se explica en la página de Google Cloud Contenedores, ya tendremos el comando kubectl, y al ejecutar el vagrant tendremos una nueva configuración para "vagrant"
Kubectl
Es el comando para trabajar con kubernetes, independientemente de donde esté la infraestructura, ya sea en vagrant, en local, en google cloud, etc.
Las configuracines están en ~/.kube/config, y en este fichero se pueden hacer referencia a varios contextos de kubernetes. Desde línea de comandos podemos ver los diferentes contextos que tenemos configurados:
$ kubectl config view
Esa configuración está dividida en - clusters - users - contexts Cada contexto hace referencia a un cluster y a un usuario. Tambié hay un valor "current-context" que nos indica que contexto estamos usando por defecto cada vez que ejecutamos un comando kubectl. Si queremos cambiar de contexto solo tenemos que ejecutar:
$ kubectl config use-context <contexto>
Para borrar contextos que ya no estemos usando solo he encontrado la forma de editar a mano el fichero de configuración.
El ejemplo del guestbook
Con el vagrant que nos hemos instalado vienen muchos ejemplos que nos pueden ser de utilidad. En mi caso me he fijado en el del Guest Book del que podemos seguir este "guiaburros"
Siguiéndolo lo primero que he hecho ha sido ejecutar el comando:
$ cluster/kubectl.sh create -f examples/guestbook/redis-master-controller.json