Orchestration

MicroK8s

Distribution Kubernetes de Canonical installée via snap en une commande. Addons activables à la demande (DNS, ingress, stockage, GPU), compatible Ubuntu, Debian, Raspberry Pi.

MicroK8s est une distribution Kubernetes certifiée développée par Canonical, distribuée via snap. Elle s'installe en une commande, démarre en quelques secondes, et propose un système d'addons pour activer à la demande les composants courants (DNS, ingress, stockage, monitoring, GPU). Particulièrement adaptée à Ubuntu, elle tourne aussi sur tout Linux avec snap, ainsi que sur Raspberry Pi.

Idéale pour : développement local, CI/CD, edge computing, clusters ARM, prototypage rapide sans configuration manuelle.


Informations essentielles

Origine : Canonical (Royaume-Uni)  ·  Licence : Apache 2.0  ·  Architectures : x86_64, ARM64, ARMv7

Liens : Site officiel  ·  Documentation  ·  GitHub  ·  Releases

Support : MicroK8s suit le cycle Kubernetes upstream. Chaque channel snap (1.32/stable, 1.33/stable…) maintient une version mineure - mise à jour explicite requise via snap refresh.

Stack par défaut

ComposantValeur
Runtimecontainerd (inclus)
CNICalico
Ingress controllerAucun (addon ingress disponible)
StockageAucun (addons hostpath-storage, openebs, rook-ceph disponibles)
DNSCoreDNS (via addon dns)
Métriquesmetrics-server (via addon metrics-server)

DNS et stockage ne sont pas actifs par défaut - les activer explicitement via microk8s enable.


Prérequis

Ressources minimales

NœudCPURAMDisque
Single-node / Control plane2 vCPU2 GB20 GB
Worker1 vCPU1 GB10 GB

Système d'exploitation

  • Ubuntu 20.04 / 22.04 / 24.04 (recommandé)
  • Debian 11 / 12, Fedora, OpenSUSE (snap requis)
  • Raspberry Pi OS 64-bit (ARM64)
  • macOS et Windows via multipass (VM automatique)

Installation

Linux

sudo snap install microk8s --classic --channel=1.32/stable

# Ajouter l'utilisateur au groupe microk8s (évite sudo sur chaque commande)
sudo usermod -aG microk8s $USER
newgrp microk8s

# Attendre que le cluster soit prêt
microk8s status --wait-ready

Vérifier

microk8s status
microk8s kubectl get nodes

Configurer kubectl en local (sans préfixe microk8s)

mkdir -p ~/.kube
microk8s config > ~/.kube/config

kubectl get nodes

Addons

MicroK8s gère ses composants via un système d'addons.

# Lister les addons disponibles et leur état
microk8s status

# Activer les addons essentiels
microk8s enable dns
microk8s enable hostpath-storage   # StorageClass locale (labo)
microk8s enable ingress            # ingress-nginx
microk8s enable metrics-server

# Activer plusieurs addons en une commande
microk8s enable dns hostpath-storage ingress metrics-server

# Désactiver un addon
microk8s disable ingress

Addons courants

AddonDescription
dnsCoreDNS - résolution DNS interne
hostpath-storageStorageClass locale (labo/single-node)
ingressingress-nginx (NodePort)
metrics-serverMétriques CPU/RAM pour kubectl top
dashboardInterface web Kubernetes
cert-managerGestion de certificats TLS
registryRegistry Docker privé local
gpuSupport NVIDIA GPU
ciliumRemplace Calico par Cilium
openebsStockage distribué (multi-nœuds)

Cluster multi-nœuds

Ajouter un nœud

# Sur le control plane : générer la commande de jointure
microk8s add-node
# Affiche une commande du type :
# microk8s join <ip>:25000/<token>

# Sur le nœud à ajouter (après installation de microk8s) :
microk8s join <ip>:25000/<token>

# Vérifier
microk8s kubectl get nodes

Haute disponibilité (3 nœuds minimum)

Le HA est activé automatiquement dès que 3 nœuds control plane rejoignent le cluster via microk8s add-node. Aucune configuration supplémentaire requise.


Mise à jour

# Voir la version actuelle
snap info microk8s | grep installed

# Mettre à jour dans la même version mineure (patch)
sudo snap refresh microk8s

# Changer de version mineure (ex : 1.32 → 1.33)
sudo snap refresh microk8s --channel=1.33/stable

Mettre à jour les nœuds control plane en premier, puis les workers. Ne pas sauter de version mineure.


Troubleshooting

Diagnostic automatique

# Génère un rapport complet (logs, état des composants, config réseau)
microk8s inspect

Cluster non disponible

microk8s status
sudo systemctl status snap.microk8s.daemon-containerd
sudo journalctl -u snap.microk8s.daemon-apiserver -f

DNS non fonctionnel

# Vérifier que l'addon dns est actif
microk8s status | grep dns

# Réactiver si nécessaire
microk8s disable dns && microk8s enable dns

# Tester la résolution interne
microk8s kubectl run test --image=busybox --rm -it --restart=Never \
  -- nslookup kubernetes.default

Pod bloqué en Pending

microk8s kubectl describe pod <nom>
microk8s kubectl get events --sort-by='.lastTimestamp'
# Si stockage manquant - activer l'addon
microk8s enable hostpath-storage

Reset complet

sudo snap remove microk8s
sudo snap install microk8s --classic --channel=1.32/stable

Commandes utiles

# Démarrer / arrêter MicroK8s
microk8s start
microk8s stop

# État du cluster
microk8s status
microk8s kubectl get nodes -o wide
microk8s kubectl get pods -A

# Récupérer le kubeconfig
microk8s config

# Version Kubernetes
microk8s kubectl version

# Logs d'un composant
sudo journalctl -u snap.microk8s.daemon-apiserver -f
sudo journalctl -u snap.microk8s.daemon-containerd -f

# Accéder au dashboard (après microk8s enable dashboard)
microk8s dashboard-proxy

Ressources

Newsletter · 2 000+ abonnés

Reste au courant de ce qui bouge en prod

RudeOps veille devops hebdo, droit au but.

Gratuit · Sans spam · Désinscription en un clic