Montage d'un cluster Kubernetes avec Raspberry Pi (partie I)

sept. 18, 2020 · 4 min. de lecture
Attention

Cette série est restée incomplète et je n’ai pour l’instant pas prévu de la poursuivre. Malgré tout, le contenu publié peut être utile.

Ceci est la première partie d’une série d’articles dans laquelle j’explique comment j’ai monté un cluster Kubernetes en utilisant des Raspberry Pi. Ici, je présente la configuration matérielle qui le compose.

PartieTitre
P01Matériel
P02Système d’exploitation et Docker
P03Cluster K3S
P04Consommation électrique

Introduction

Kubernetes est une technologie d’orchestration de conteneurs présente sur le marché depuis plusieurs années et de plus en plus utilisée dans les environnements professionnels. Toutefois, jusqu’à récemment, je n’avais pas encore eu l’occasion de travailler directement avec elle. J’utilise Docker de manière intensive depuis des années et, comme évolution naturelle, je souhaitais me plonger dans Kubernetes. Et puisque je crois fermement que la meilleure manière d’apprendre est de pratiquer, j’ai décidé de monter mon propre cluster depuis zéro.

J’ai envisagé de le déployer dans le cloud, mais la multitude de services, de particularités et de modèles de facturation proposés par les différents fournisseurs m’a découragé. Mon objectif était d’apprendre Kubernetes, pas d’apprendre comment AWS, Google Cloud ou Azure facturent leurs services. De plus, j’avais déjà eu quelques mauvaises surprises avec des services soi-disant “gratuits” qui ne l’étaient pas vraiment. J’ai donc choisi de monter un cluster on-premise, même si cela impliquait un coût initial plus élevé et un peu plus de travail manuel.

Cette option me permet de me concentrer sur les concepts fondamentaux sans être distrait par des services supplémentaires, et elle m’offre une tranquillité d’esprit totale : si j’éteins le cluster, je ne génère aucune dépense imprévue.

Composants du cluster

Le cluster est initialement composé de 5 Raspberry Pi 4B avec 8 Go de RAM chacun. Cela représente :

  • 20 cœurs à 1,5 GHz
  • 40 Go de RAM au total

Chaque Raspberry utilise une carte microSD Samsung EVO Plus de 32 Go, qui sert dans un premier temps à la fois pour le système d’exploitation et pour la persistance des conteneurs. Plus tard, lorsque je travaillerai avec des volumes persistants, j’ajouterai un système de stockage dédié.

Pour simplifier le montage et réduire le nombre de câbles, j’ai installé des modules PoE HAT, qui permettent d’alimenter les Raspberry directement via le câble Ethernet. Cela permet d’éliminer les adaptateurs et câbles USB supplémentaires.

Le réseau est centralisé autour d’un switch PoE Netgear GS108PP, doté de 8 ports alimentés, ce qui me permet de connecter et d’alimenter jusqu’à 7 Raspberry Pi (un des ports sert à relier le switch au reste du réseau).

L’ensemble est monté dans une baie rack 19" de 6U (modèle Phasak PHP 2106). Sa répartition est la suivante :

  • 1U pour une multiprise avec interrupteur
  • 1U pour le switch, monté sur une étagère
  • 2U pour accueillir jusqu’à 12 Raspberry Pi
  • 2U libres pour de futures extensions

Pour organiser proprement les Raspberry, j’ai utilisé un projet imprimé en 3D disponible sur Thingiverse. Il permet de les installer sur des plateaux amovibles à l’intérieur du rack, ce qui facilite énormément la maintenance. La plupart des solutions que j’avais vues sur Internet empilent les Raspberry d’une manière qui oblige à tout démonter pour en remplacer une. Celle-ci, au contraire, est confortable et modulaire.

Avant de laisser le cluster fonctionner en continu, je souhaite mesurer sa consommation électrique. Mon intention est d’intégrer cette mesure dans Home Assistant, que j’utilise pour la domotique à la maison. Je compare donc encore différentes prises ou compteurs compatibles.

Conclusion

La combinaison de tous ces composants donne un cluster :

Compact

La baie 19" occupe très peu d’espace et peut être placée pratiquement n’importe où.

Bien ventilé

Le rack inclut deux grands ventilateurs supérieurs, et chaque Raspberry possède son propre ventilateur intégré au PoE HAT. Le refroidissement est largement suffisant pour laisser le cluster fonctionner en continu sans me soucier de la température.

Ordonné

L’utilisation du PoE réduit considérablement la quantité de câbles, offrant une installation propre avec davantage de prises disponibles sur la multiprise.

Éclairé

La baie intègre un éclairage LED, ce qui facilite les tâches de maintenance sans devoir éclairer toute la pièce.

Extensible

Grâce au support imprimé en 3D, je peux accueillir jusqu’à 12 Raspberry Pi en n’utilisant que 2U. Les 2U restants me permettent de :

  • ajouter d’autres Raspberry Pi
  • installer un onduleur (UPS)
  • ajouter du stockage
  • ou toute autre extension future

BOM (Bill of Materials)