Monto un cluster Kubernetes con Raspberry Pi (parte III)
Esta es una serie de posts en la que voy a explicar cómo he montado un cluster de Kubernetes utilizando Raspberry Pi y algún ejemplo de uso.
Parte | Título |
---|---|
P01 | Hardware |
P02 | Sistema Operativo y Docker |
P03 | Cluster K3S |
P04 | Consumo eléctrico |
P05 | Monitorización |
P06 | (proximamente) |
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.