Kubernetes sur raspberry pi
Deux univers étendues qui se rencontrent, ça m’a toujours donné envie de le faire.
D’un côté k8s, très inscrit dans le monde professionnel, versé par google à la communauté, ce qui se fait de mieux en matière d’orchestration de conteneur.
De l’autre, un des serveurs les plus populaires, des plus petits et des moins chers du marché. Très souvent utilisé chez les particuliers pour faire de la domotique, par les gamers pour faire notamment du rétro gaming et des milliers d’autres choses tellement il est pratique et universel.
Réunir ces deux là me semblait sympa avant de commencer. Et grâce à la communauté autour de la chaîne xavki ,j’ai pu réussir cet objectif.
1. Commençons par la présentation et les remerciements
Vidéo youtube : PiKub — 0. Kubernetes et Raspberry : le projet et merci !!
2. Le montage physique de ce cluster
Maintenant commençons par un peu de mécanique abordable pour chacun d’entre nous. Très simple il suffit d’assembler :
- 6 raspberry 4
- un socle permettant de racker tous les raspberry
- les dissipateurs thermiques pour éviter la surchauffe (les raspberry 4 chauffent plus que les 3 pour info)
- le switch 10 ports et les cables RJ45
- l’alimentation unique pour le tout
Un retour sur ce montage dans cette vidéo.
3. Installation du système d’exploitation et de sa configuration
Plusieurs options étaient possibles :
- choisir un OS spécifique pour faire tourner des conteneurs comme docker par exemple Hyptio
- choisir un OS standard Debian
- choisir un OS standard Raspberry à savoir Raspbian
J’ai choisi la dernière option à savoir Raspbian stretch. Pourquoi la stretch alors que la buster existe ? Tout simplement car kubernetes n’est pas compatible pour le moment avec la dernière version de docker. Pour éviter de taper trop haut je me suis orienté vers une stretch. Le downgrade de version de docker n’étant génial non plus.
Puis, j’ai utilisé balerina etcher pour installer cet OS sur les SD cards (6 fois… la procédure est rodée…). En oubliant pas que l’on peut se passer d’un écran pour installer un raspberry :
- activer le ssh : pour cela ajouter un fichier nommé “ssh” vide à la racine de la partition /boot
- configurer l’ip : pour cela modifier le fichier dans /rootfs/etc/dhcpcd.conf avec l’ajout de :
interface eth0
static ip_address=192.168.1.20
static routers=192.168.1.254
static domain_name_servers=192.168.1.254
en renseignant l’ip de la machine et l’ip de votre routeur.
Tout cela en vidéo ici
4. Installation du cluster kubernetes avec ansible
Maintenant il ne reste plus qu’ à installer k8s soit à la main… soit de manière orchestrée avec notre ami ansible. Et comme les raspberry adorent qu’on leur parle en python j’ai choisi la deuxième option.
J’ai donc créé un playbook pour l’occasion et les rôles nécessaires. Et finalement ce n’est pas la partie la plus désagréable.
Voici d’ailleurs le playbook en question que j’ai amélioré un peu pour créer un rôle que j’ai poussé ici sur galaxy.
Vidéo : orchestration de kubernetes avec ansible
5. Conclusion
En guise de conclusion, je tiens à remercier toutes les personnes qui ont pu m’aider dans ce projet. Je remercie aussi François Mocq du site framboise314 pour avoir relayé ce projet auprès de la communauté raspberry.