Logo

Veskleg Conseil

Cluster Kubernetes

Création d'un cluster Kubernetes à partir de vieux laptops

Contexte

J'ai dans mes placards 4 ou 5 vieux laptops que je garde au cas où et qui datent de quelques années. Un jour je suis tombé sur MicroK8s une solution proposé par Canonical (créateurs d'Ubuntu). La proposition est séduisante : en gros c'est "Kubernetes pour les nuls". J'ai toujours été un peu fasciné par Kubernetes et donc je me dis que ça pouvait être l'occasion d'essayer pour avoir mon propre cluster.

Solution mise en œuvre

Le déploiement d'un cluster fonctionnel est assez simple : microK8s s'installe via un package snap. En quelques commandes vous pouvez regrouper plusieurs machine (3 dans mon cas) pour former un cluster. Ensuite le branchement d'un outil comme Lens se fait très simplement, kubectl peut également être utilisé ça fonctionne très bien. La promesse d'avoir un cluster Kubernetes fonctionnel en quelques clics est objectivement tenue. C'est bien documenté et ça fonctionne du premier coup.

Les choses se corsent un peu quand on s'attaque à la gestion du stockage. Pour avoir plutôt utilisé Kubernetes dans un environnement Cloud comme AWS ou GCP, j'étais habitué à consommer des solutions des stockages "sur étagère" qui marchaient très bien sans trop se poser de questions. Avec la notion de Persistent Volume Claim Kubernetes propose une approche complètement abstraite du stockage, il suffit de lui préciser le bon "provider" et ça marche.

Assez naturellement j'ai commencé par essayer d'installer mon propre "provider" sur le cluster. J'ai testé plusieurs solutions comme notamment GlusterFS et Mayastor. J'avoue que je me suis assez vite découragé : c'était compliqué à mettre en place, très consommateur de ressources (CPU et réseau) et finalement pas tellement plus fiable parce que très compliqué à gérer. J'ai fini par me rabattre sur un stockage local "hostpath". Bien que cette solution soit contraire à la "philosophie" de Kubernetes où chaque Pod doit pouvoir être déployé sur n'importe quel noeud. Je trouve que dans mon cas où les noeuds sont des machines "phyisques" qui ne changent pratiquement jamais ça fonctionne très bien.

Il est facile de créer des Storage Class personnalisé qui permettent de dédier un volume en particulier d'un Node pour faire du stockage. Kubernetes propose un provisioner par défaut qui se nomme microk8s.io/hostpath (des exemples sont disponibles sur ce repo). On peut facilement créer une StorageClass par disque (ou partition), on peut ainsi lier un Peristent Volume Claim à disque du cluster.

En cas de perte d'un noeud, les données sont facilement récupérables sur le disque dur : il suffit de monter la partition ailleurs et on peut récupérer les données. Ça ne permet évidemment pas de faire de la haute disponibilité mais ça permet de limiter considérablement le risque de perdre des données critiques.

Au final je trouve que MicroK8S tient très bien sa promesse et permet de créer facilement un environnement de développement local robuste et facile à maintenir.

Bénéfices

  • Coût négligeable Si on considère que le hardware est déjà largement amorti il ne reste plus que l'électricité à payer
  • Environnement de test complet Interface complète pour faire des tests et du debug
  • Sans risque On peut avoir une solution 100% interne sans aucune exposition sur Internet

Technologies utilisées

Ubuntu

© 2025 Veskleg Conseil - Entreprise Individuelle domiciliée au 35 rue Jean Delalande, 35400 Saint-Malo, enregistrée au RCS de Saint-Malo sous le numéro 988 516 860

Version: 1.4.0