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 maestro
  • k3s_node: que incluye los nodos esclavos
  • k3s_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.

Diego Castro
Diego Castro
Ingeniero en Informática

Apasionado de la programación

Relacionado