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
| Composant | Valeur |
|---|---|
| Runtime | containerd (inclus) |
| CNI | Calico |
| Ingress controller | Aucun (addon ingress disponible) |
| Stockage | Aucun (addons hostpath-storage, openebs, rook-ceph disponibles) |
| DNS | CoreDNS (via addon dns) |
| Métriques | metrics-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œud | CPU | RAM | Disque |
|---|---|---|---|
| Single-node / Control plane | 2 vCPU | 2 GB | 20 GB |
| Worker | 1 vCPU | 1 GB | 10 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
| Addon | Description |
|---|---|
dns | CoreDNS - résolution DNS interne |
hostpath-storage | StorageClass locale (labo/single-node) |
ingress | ingress-nginx (NodePort) |
metrics-server | Métriques CPU/RAM pour kubectl top |
dashboard | Interface web Kubernetes |
cert-manager | Gestion de certificats TLS |
registry | Registry Docker privé local |
gpu | Support NVIDIA GPU |
cilium | Remplace Calico par Cilium |
openebs | Stockage 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
- Site officiel : https://microk8s.io
- Documentation : https://microk8s.io/docs
- GitHub : https://github.com/canonical/microk8s
- Addons disponibles : https://microk8s.io/docs/addons
- Raspberry Pi : https://microk8s.io/docs/install-raspberry-pi