Una de las cosas que más me sorprenden de Kubernetes es que es necesario instalar una capa de red sobre el clúster.
En el caso concreto del que he obtenido las capturas de pantalla, el clúster corre sobre máquinas virtuales con Debian Jessie.
Photo by Mabel Amber
Una de las cosas que más me sorprenden de Kubernetes es que es necesario instalar una capa de red sobre el clúster.
En el caso concreto del que he obtenido las capturas de pantalla, el clúster corre sobre máquinas virtuales con Debian Jessie.
Tras la alegría inicial pensando que la configuración de rsyslog era la causante de los cuelgues de las dos RPi 3 (El nodo k3 del clúster colgado de nuevo), pasadas unas horas los dos nodos k2 y k3 han dejado de responder de nuevo.
Así que es el momento de atacar el problema de forma algo más sistemática. Para ello seguiré las instrucciones que proporcina la página de Kubernetes Troubleshooting Clusters.
Los nodos k2 y k3 del clúster dejan de responder pasadas unas horas. La única manera de solucionarlo es reiniciar los nodos. Siguiendo con la revisión de logs, he encontrado que se genera una gran cantidad de entradas en syslog en referencia a orphaned pods. Además, el número de estos errores no para de crecer rápidamente.
En la entrada anterior Múltiples mensajes ‘action 17 suspended’ en los logs comentaba que estaba a la espera de obtener resultados; después de apenas unas horas, ya los tengo: k3 se ha vuelto a colgar mientras que k2 no.
Este resultado parece demostrar que la mala configuración de rsyslog es la causante de los cuelgues de las RPi 3 en el clúster de Kubernetes.
Actualización: El nodo k2 sobre RPi3 sigue colgándose :(
Actualización II: Parece solucionado
Al lanzar la inicialización del clúster con kubeadm init
en Debian Jessie, las comprobaciones inciales indican que no se encuentran los cgroups para la memoria (échale un vistazo al artículo La instalación de Kubernetes falla en Debian Jessie (missing cgroups: memory)). Los cgroups son una de las piezas fundamentales en las que se basa Docker para aislar los procesos de los contenedores, por lo que la inicialización del clúster de Kubernetes se detiene.
La solución es tan sencilla como habilitar los cgroups durante el arranque.
La instalación de Kubernetes se realiza de forma casi automática gracias al script kubeadm
. Sólo hay que seguir las instrucciones de Installing Kubernetes on Linux with kubeadm y la salida por pantalla del propio script.
Después de realizar la instalación del nodo master del clúster Kubernetes, el siguiente paso es agregar nodos adicionales al clúster. Es en estos nodos donde se van a planificar los pods que realizan las funciones productivas del clúster (en el nodo master sólo realiza tareas de gestión del clúster).
Después de conseguir arrancar Kubernetes tras la instalación, al intentar ejecutar comandos vía kubectl
obtengo el mensaje de error The connection to the server localhost:8080 was refused - did you specify the right host or port?
A continuación explico cómo solucionar el error y evitar que vuelva a mostrarse.
Uno de los objetivos motivadores de la existencia de este blog es instalar un clúster de Kubernetes sobre Raspberry Pi. Este artículo se centra en las tareas previas a la instalación en sí.
Kubernetes requiere una instalación previa de Docker, una tarea simplificada gracias a HypriotOS, la distro creada específicamente con este fin.
El siguiente paso, la instalación de Kubernetes en la Raspberry será objeto de otra(s) entrada(s). Pero sin duda esta tarea sería mucho más complicada sin las contribuciones del joven finlandés Lucas Käldström y su proyecto -ahora integrado la rama principal- Kubernetes on ARM.