Monto un cluster Kubernetes con Raspberry Pi (parte III)

Esta serie quedó incompleta y por ahora no tengo previsto continuarla. Aun así, el contenido publicado puede ser útil.
Esta es la tercera parte de una serie de posts en la que explico cómo he montado un cluster de Kubernetes utilizando Raspberry Pi. Aquí muestro cómo instalo kubernetes utilizando k3s.
| Parte | Título |
|---|---|
| P01 | Hardware |
| P02 | Sistema Operativo y Docker |
| P03 | Cluster K3S |
| P04 | Consumo eléctrico |
K3s
K3s es una distribución de kubernetes certificada que ha sido concebida para el mundo IoT y Edge Computing. K3s ha sido optimizada para ARM (ARM64 y ARMv7) y esto es lo que ha hecho decidirme por esta distribución para instalar kubernetes en el cluster de raspberry pi. En K3s se han reducido las dependencias al máximo, haciendo posible que se distribuya como un único binario de menos de 40 MB. La reducción de dependencias también ha supuesto una simplificación del proceso de instalación.
Instalación
La instalación es muy sencilla, ya que el equipo de K3s ha creado un playbook de Ansible para realizarla. Yo me he basado en dicho playbook y he realizado alguna pequeña adaptación/mejora.
Lo primero que he realizado ha sido adaptar el fichero de inventario a las necesidades del playbook, para ello he definido los grupos:
k3s_master: que incluye el nodo maestrok3s_node: que incluye los nodos esclavosk3s_cluster: que incluye todos los miembros del cluster
[k3s_master:children]
rpicluster01
[k3s_node:children]
rpicluster02
rpicluster03
rpicluster04
rpicluster05
[k3s_cluster:children]
k3s_master
k3s_node
(se puede ver el fichero completo aquí)
A continuación se muestra el playbook de instalación:
- hosts: k3s_cluster
gather_facts: true
become: true
roles:
- role: prereq
- role: download
- role: ubuntu
- hosts: k3s_master
become: true
roles:
- role: k3s/master
- hosts: k3s_node
become: true
roles:
- role: k3s/node
Como se puede observar, se basa en el uso de roles. Existen 3 roles de preparación (prereq, download y ubuntu) que se ejecutarán sobre todos los miembros del cluster. Estos roles se encargan de activar algunas configuraciones necesarias en el sistema operativo, así como de realizar la descarga del binario en función de la arquitectura sobre la que se esté realizando la instalación.
Además existe un role que se ejecutará sobre el nodo maestro y otro que se ejecutará sobre los nodos esclavos. Estos roles son los que crean el cluster K3s propiamente dicho.
(se puede ver el playbook completo aquí)
Conclusión
Gracias al equipo de desarrollo de K3s, que nos proporciona un playbook de Ansible, se puede crear un cluster de kubernetes de una manera muy sencilla.

Soy ingeniero en informática con más de 15 años de experiencia, durante los cuales he trabajado en entornos muy diversos y he asumido distintos roles dentro del ciclo de vida del desarrollo. Esta trayectoria me ha permitido adquirir una visión amplia del sector y adaptarme con facilidad a diferentes contextos técnicos y organizativos.
He pasado por grandes consultoras multinacionales, participando en proyectos de distinta naturaleza y colaborando con equipos distribuidos en varios países. También he vivido la experiencia de trabajar en una startup en sus primeras etapas, lo que me dio la oportunidad de involucrarme en la creación de un producto desde cero y conocer de cerca los retos del ámbito empresarial.
Me apasiona la programación y mantengo una actitud de aprendizaje continuo. Para mí, lo realmente importante no es dominar un lenguaje o framework concreto, sino la capacidad de aprender, evolucionar y comprender los problemas en profundidad para ofrecer soluciones sólidas. En este camino de aprendizaje he explorado áreas como Data Science y Big Data, estudiando un máster que representó un ejemplo más de mi interés por ampliar horizontes y entender nuevas perspectivas tecnológicas.