🛠 Cluster Kubernetes : quatre CM3+ sur une Turing Pi
Objetivos
El formato SODIMM del CM3+ permitió una familia de tarjetas de clúster: la Turing Pi v1 aloja cuatro módulos Compute Module (incluido el CM3+) con Ethernet, alimentación redundante y control de alimentación por nodo. La compilación de referencia es la de Jeff Geerling (repositorio geerlingguy/turing-pi-cluster, que lista explícitamente «Raspberry Pi Compute Module 3+ y HypriotOS»): cuatro nodos K3s. Este tutorial sigue el mismo procedimiento: flashear HypriotOS, arrancar los cuatro nodos, instalar K3s y realizar el despliegue multinodo.
Hardware
- Tarjeta Turing Pi v1 + 4 módulos CM3+ (se recomienda eMMC para mayor fiabilidad)
- Módulo de alimentación Turing Pi + 4 cables Ethernet
- PC anfitrión con la cadena de herramientas de flasheo de HypriotOS (sd-card-tool o script de flasheo)
- El repositorio de referencia: github.com/geerlingguy/turing-pi-cluster (archivado en favor de Turing Pi 2/CM4, pero el método para CM3+ sigue documentado)
Código completo
# 1. Flasher HypriotOS (images Pi 3 compatibles CM3+) sur les 4 eMMC via usbboot
# (un module à la fois en device-boot, comme pour tout CM à eMMC)
export HIPRIVE=192.168.1.0/24
flash --hostname node1 --addr 192.168.1.11 hypriotos-rpi-v1.8.0.img.zip
# 2. Installer K3s sur le serveur (node1), les agents rejoignent via token
# Sur node1 :
curl -sfL https://get.k3s.io | sh -s - server --write-kubeconfig-mode 644
cat /var/lib/rancher/k3s/server/node-token
# 3. Sur node2-4 : rejoindre le cluster
curl -sfL https://get.k3s.io | K3S_URL=https://192.168.1.11:6443 \
K3S_TOKEN=<token> sh -
# 4. Vérifier et déployer
kubectl get nodes -o wide
kubectl create deployment nginx --image=nginx --replicas=4
kubectl get pods -o wide # les 4 pods doivent se répartir sur les 4 nœuds
Verificación esperada
kubectl get nodes lista 4 nodos en estado Ready (1 servidor + 3 agentes), cada uno con su IP estática de HypriotOS. El despliegue de nginx con 4 réplicas se distribuye entre los cuatro módulos, lo que demuestra que el clúster funciona. La Turing Pi permite apagar un nodo mediante su control de alimentación: el pod se reinicia en otro nodo en pocos segundos.
Errores frecuentes
- Usar una imagen anterior a noviembre de 2018: el CM3+ no arranca — verificar la fecha de la imagen de HypriotOS/Raspberry Pi OS utilizada.
- 1 GB de RAM por nodo sin límites de memoria: K3s y los pods deben tener límites definidos (resources.limits); de lo contrario, el agente será eliminado por OOM-kill en el primer pico de uso.
- Direcciones IP DHCP cambiantes: fijar las direcciones (cloud-init de HypriotOS); si no, el certificado del servidor K3s no coincidirá con la IP y los agentes serán rechazados.
- Alimentación insuficiente: 4 × CM3+ bajo carga de CPU + 4 PHY Ethernet superan la capacidad de una fuente inadecuada — utilizar el módulo de alimentación previsto para la tarjeta.
- Esperar el rendimiento de un clúster CM4/CM5: no hay gigabit (bus USB 2.0 por nodo), 1 GB de RAM, 1,2 GHz — este clúster sirve para aprender Kubernetes, no para cargar un sitio web.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash