Instala Raspbian y prepara el sistema para Kubernetes

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:

HostnameIPDescripción
noldorK3sM1192.168.0.240Master Node 1. Responsable de la orquestación del cluster.
noldorK3sM2192.168.0.241Master Node 2. Responsable también de la orquestación del cluster.
noldorK3sN1192.168.0.242Worker node 1. Ejecuta los pods desplegados y gestionado remotamente por los Master Nodes.
noldorK3sN2192.168.0.243Worker node 2. Ejecuta los pods desplegados y gestionado remotamente por los Master Nodes.
noldorK3sN3192.168.0.244Worker node 3. Ejecuta los pods desplegados y gestionado remotamente por los Master Nodes.
noldorK3sN4192.168.0.245Worker node 4. Ejecuta los pods desplegados y gestionado remotamente por los Master Nodes.
Cluster de Raspberrys K3s

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:

  1. Descomprimimos la imagen.
  2. Ejecutamos Etcher.
  3. Seleccionamos la imagen
  4. Seleccionamos la tarjeta que previamente habremos conectado en el ordenador
  5. Hacemos click en Flash!
  6. 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
  7. Por último desconectamos la MicroSD de nuestro ordenador, la colocamos en la Raspberry, le conectamos el cable de red y finalemente la encendemos.
  8. 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:

  1. Cambiar la contraseña por defecto
  2. Cambiar el hostname
  3. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *