Introducción
En el momento de escribir éste artículo, mi cluster, después de varias revisiones y actualizaciones, se compone de 6 nodos, 2 de ellos son los Master, para dotar a la infraestructura de alta disponibilidad (HA) y los 4 restantes son los Workers, los cuales soportarán la carga de los pods que vayamos a desplegar después.
Como servidor externo dispongo de un NanoPC-T4 con un disco SSD NVEM M2 de 1 Tera. Ésta placa, que ejecuta un sistema operativo Linux Armbian, me permite ofrecer, con muy bajo consumo, un servidor de ficheros NFS que alimenta mi cluster de Kubernetes, un servidor MariaDB externo para dotar a la infraestructura de alta disponibilidad y otros servicios ajenos a todo esto; todo en un espacio mínimo y consumo eléctrico muy ajustado.
A continuación os detallo como está desplegado:
| Hostname | IP | Descripción |
| noldorK3sM1 | 192.168.0.240 | Master Node 1. Responsable de la orquestación del cluster. |
| noldorK3sM2 | 192.168.0.241 | Master Node 2. Responsable también de la orquestación del cluster. |
| noldorK3sN1 | 192.168.0.242 | Worker node 1. Ejecuta los pods desplegados y gestionado remotamente por los Master Nodes. |
| noldorK3sN2 | 192.168.0.243 | Worker node 2. Ejecuta los pods desplegados y gestionado remotamente por los Master Nodes. |
| noldorK3sN3 | 192.168.0.244 | Worker node 3. Ejecuta los pods desplegados y gestionado remotamente por los Master Nodes. |
| noldorK3sN4 | 192.168.0.245 | Worker node 4. Ejecuta los pods desplegados y gestionado remotamente por los Master Nodes. |
Los nombres y direcciones ip son las mias, que no tienen porque coincidir con vuestra red local.

Instalación de Raspbian en la MicroSD
Para instalar Raspbian en la MiscroSD yo utilizo Etcher aunque se podría utilizar otros muchos, e incluso mediante linea de comandos en linux/OSx con el comando dd.
Necesitaremos también la ultima versión de Raspbian, podéis elegir el sabor que más os guste, sin embargo, yo os recomiendo la versión Lite, ya que con la linea de comandos es mas que suficiente y nos ahorraremos el espacio que usa el entorno gráfico.
Una vez instalado Etcher y descargada la imagen:
- Descomprimimos la imagen.
- Ejecutamos Etcher.
- Seleccionamos la imagen
- Seleccionamos la tarjeta que previamente habremos conectado en el ordenador
- Hacemos click en Flash!
- Una vez haya terminado, debemos activar el ssh, que por defecto viene desactivado. Para ello, debemos crear un fichero vacío en /boot con el nombre ssh
- Por último desconectamos la MicroSD de nuestro ordenador, la colocamos en la Raspberry, le conectamos el cable de red y finalemente la encendemos.
- Volver a realizar los pasos 1 a 7 con todos los nodos de vuestro cluster.

Configurar Raspbian
Habría que realizar varias tareas previas antes de seguir adelante:
- Cambiar la contraseña por defecto
- Cambiar el hostname
- Configurar una ip estática.
Se podría realizar todo esto mediante linea de comandos, sin embargo, creo que para la mayoría de los usuarios resulta más cómodo utilizar el comando raspi-config que nos ofrece una manera más amigable de hacerlo.
Por último, editamos el fichero /etc/dhcpd.conf para para asignar una ip fija:
pi@noldork3sN1:~ $ sudo vi /etc/dhcpcd.conf interface eth0 static ip_address=192.168.0.242/24 static routers=192.168.0.1 static domain_name_servers=1.1.1.1
Si no queréis editar el fichero lo podéis hacer igualmente mediante la configuración DHCP de vuestro router.
Activar los contendores.
Tenemos que activar en el kernel la opción de usar contenedores, para ello, editamos el fichero /boot/cmdline.txt
pi@noldork3sN1:~ $ sudo vi /boot/cmdline.txt
Y añadimos lo siguiente al final:
cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory
Una vez terminado, solo nos queda reiniciar nuestra raspberry.
pi@noldork3sN1:~ $ sudo reboot Connection to 192.168.0.242 closed by remote host. Connection to 192.168.0.242 closed.
Pasados unos segundos nos conectamos nuevamente:
sander:~ i5Js$ ssh pi@noldork3sn1 Linux noldork3sN1 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri Jul 3 21:01:42 2020 from 192.168.1.10 pi@noldork3sN1:~ $
Configurar el almacenamiento.
En mi caso, lo estoy sirviendo mediante NFS desde mi nanoPC-T4, para configurar NFS en Armbian, nada mejor que seguir el siguiente tutorial (en inglés)
Hay miles de opciones de dotar de almacenamiento persistente a nuestro cluster, explicar cada una de las opciones nos llevaría demasiado tiempo y se saldría de la temática del articulo, por lo que si necesitáis ayuda, por favor, dejar un comentario y trataremos de ayudaros de una manera u otra.
Conclusión
Si habéis llegado hasta aquí, ya tendréis listo vuestro cluster de Raspberrys, en siguientes tutoriales os explicaré como instalar y configurar Kubernetes con Rancher k3s así como las herramientas necesarias para desplegar aplicaciones.





