🛠 Cluster Kubernetes : quatre CM3+ sur une Turing Pi
Objectifs
Le format SODIMM du CM3+ a permis une famille de cartes clusters : la Turing Pi v1 accueille quatre modules Compute Module (dont le CM3+) avec Ethernet, alimentation redondante et contrôle d'alimentation par nœud. Le build de référence est celui de Jeff Geerling (dépôt geerlingguy/turing-pi-cluster, qui liste explicitement « Raspberry Pi Compute Module 3+ et HypriotOS ») : quatre nœuds K3s. Ce tutoriel reprend la démarche : flash HypriotOS, amorçage des quatre nœuds, installation K3s, déploiement multi-nœuds.
Matériel
- Carte Turing Pi v1 + 4 modules CM3+ (eMMC recommandé pour la fiabilité)
- Module d'alimentation Turing Pi + 4 câbles Ethernet
- PC hôte avec la toolchain de flash HypriotOS (sd-card-tool ou script flash)
- Le dépôt de référence : github.com/geerlingguy/turing-pi-cluster (archivé au profit des Turing Pi 2/CM4, mais la méthode CM3+ reste documentée)
Code complet
# 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
Vérification attendue
kubectl get nodes liste 4 nœuds Ready (1 serveur + 3 agents), chacun avec son IP statique HypriotOS. Le déploiement nginx à 4 réplicas se répartit sur les quatre modules — preuve que le cluster fonctionne. La Turing Pi permet d'éteindre un nœud via son contrôle d'alimentation : le pod redémarre ailleurs en quelques secondes.
Erreurs fréquentes
- Utiliser une image plus vieille que novembre 2018 : le CM3+ ne démarre pas — vérifier la date de l'HypriotOS/Raspberry Pi OS utilisé.
- 1 Go de RAM par nœud sans limites mémoire : K3s + pods doivent être bornés (resources.limits), sinon l'agent se fait OOM-kill au premier pic.
- Adresses IP DHCP mouvantes : figer les adresses (cloud-init HypriotOS) sinon le certificat K3s du serveur ne matche plus l'IP et les agents sont rejetés.
- Alimentation sous-dimensionnée : 4 × CM3+ en charge CPU + 4 PHY Ethernet dépassent un mauvais brick — utiliser le module d'alimentation prévu pour la carte.
- Attendre les performances d'un cluster CM4/CM5 : pas de gigabit (bus USB 2.0 par nœud), 1 Go de RAM, 1,2 GHz — ce cluster sert à apprendre Kubernetes, pas à charger un site.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash