Ce guide vous permet de créer un cluster Kubernetes local en 5 minutes. Vous apprendrez à démarrer un cluster single-node, multi-nœuds (avec workers), et même un cluster HA (haute disponibilité) avec 3 control-planes. Toutes les commandes ont été testées avec Minikube v1.37.0 et Kubernetes v1.34.0.
Ce que vous saurez faire à la fin :
- Installer Minikube et choisir le bon driver
- Créer et gérer plusieurs clusters avec les profils
- Déployer un cluster multi-nœuds avec workers
- Configurer un cluster HA avec kube-vip et etcd distribué
- Activer les add-ons utiles (metrics-server, ingress, dashboard)
Quand choisir Minikube
Section intitulée « Quand choisir Minikube »Minikube n’est pas le seul outil pour créer un cluster Kubernetes local. Voici un comparatif pour vous aider à choisir :
| Critère | Minikube | Kind | K3s |
|---|---|---|---|
| Cas d’usage | Dev local, apprentissage | CI/CD, tests, clusters jetables | Edge / IoT / homelab, prod légère |
| Datastore | etcd (kubeadm), HA stacked | etcd (kubeadm) dans les control-planes | SQLite (défaut) ; embedded etcd (HA) |
| Multi-nœuds | ✅ --nodes | ✅ via config YAML | ✅ Natif (server/agent) |
| HA control plane | ✅ --ha (min. 3 CP) + kube-vip | ✅ multi control-planes (HAProxy) | ✅ embedded etcd (min. 3 serveurs) |
| Ressources | 2 CPU, 20 GB disque (défaut) | ≥6 GB RAM Docker (8 GB conseillé) | Agent ~275 MiB, Server ~1.6 GiB |
| GPU | ✅ --gpus (driver Docker) | ⚠️ Pas clé en main | ⚠️ À configurer (toolkit + plugin) |
| Persistance | ✅ Profils persistants | ⚠️ Plutôt jetable | ✅ Cluster système (systemd) |
| Installation | VM ou conteneur selon driver | Conteneurs Docker “nodes” | Binaire + service (Linux) |
Choisissez Minikube si :
- Vous débutez avec Kubernetes et voulez un environnement proche de la production
- Vous avez besoin de tester la haute disponibilité (HA)
- Vous voulez des add-ons prêts à l’emploi (dashboard, metrics, ingress)
Comment fonctionne Minikube
Section intitulée « Comment fonctionne Minikube »Comprendre l’architecture de Minikube vous aidera à diagnostiquer les problèmes et à choisir le bon driver.
Contrairement à Kind qui utilise des conteneurs Docker comme nœuds, Minikube peut créer des vraies VMs ou des conteneurs selon le driver choisi. C’est ce qui lui permet de supporter des fonctionnalités impossibles avec Kind (GPU, isolation complète).
Architecture avec le driver Docker
Section intitulée « Architecture avec le driver Docker »Avec le driver docker (le plus courant), chaque nœud est un conteneur Docker qui simule une machine complète :
Points clés :
- Chaque nœud est un conteneur Docker avec systemd, kubelet, et un runtime conteneur (Docker ou containerd) à l’intérieur
- Les pods tournent dans des conteneurs à l’intérieur des conteneurs nœuds
- Le réseau entre nœuds passe par le réseau bridge Docker
Architecture avec un driver VM (KVM, VirtualBox)
Section intitulée « Architecture avec un driver VM (KVM, VirtualBox) »Avec les drivers VM, chaque nœud est une vraie machine virtuelle :
Avantages des VMs :
- Isolation complète (noyau séparé)
- Support GPU possible
- Plus proche d’un vrai cluster de production
Inconvénients :
- Démarrage plus lent (~60s vs ~20s pour Docker)
- Consommation mémoire plus élevée
Deux daemons Docker distincts
Section intitulée « Deux daemons Docker distincts »C’est une source fréquente de confusion : avec le driver Docker, il y a deux daemons Docker :
- Docker de l’hôte : celui que vous utilisez avec
docker build - Docker du nœud Minikube : celui qui exécute vos pods
Quand vous buildez une image sur l’hôte, elle n’est pas visible dans Minikube.
C’est pourquoi vous devez utiliser minikube image load ou configurer votre
shell pour utiliser le daemon Minikube :
eval $(minikube docker-env) # Bascule vers le daemon Minikubedocker build -t mon-app:v1 . # Build directement dans Minikubeeval $(minikube docker-env -u) # Revient au daemon localPrérequis
Section intitulée « Prérequis »Avant de commencer, vérifiez que vous avez :
- CPU : 2 cœurs minimum (4 recommandés pour HA)
- RAM : 2 Go par nœud (6 Go minimum pour un cluster HA de 3 nœuds)
- Disque : 20 Go d’espace libre
- Docker installé et fonctionnel — Guide d’installation Docker
- kubectl installé — Guide kubectl
Vérifier la virtualisation
Section intitulée « Vérifier la virtualisation »egrep -q 'vmx|svm' /proc/cpuinfo && echo "Virtualisation OK" || echo "Activez VT-x/AMD-V dans le BIOS"sysctl -a | grep machdep.cpu.features | grep -i vmx && echo "Virtualisation OK"Ouvrez PowerShell en administrateur :
systeminfo | findstr /i "virtualization"Vérifier les limites inotify (Linux)
Section intitulée « Vérifier les limites inotify (Linux) »Pour les clusters multi-nœuds, augmentez les limites inotify si vous rencontrez l’erreur “Too many open files” :
# Vérifier la valeur actuellecat /proc/sys/fs/inotify/max_user_instances
# Augmenter si < 256sudo sysctl -w fs.inotify.max_user_instances=512sudo sysctl -w fs.inotify.max_user_watches=524288Installer Minikube
Section intitulée « Installer Minikube »curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64sudo install minikube-linux-amd64 /usr/local/bin/minikuberm minikube-linux-amd64brew install minikubechoco install minikubeOu téléchargez depuis le site officiel.
Vérification :
minikube versionminikube version: v1.37.0commit: ad9b7f9756e14c8a15088a1899398d41a96d77d8Démarrer un cluster single-node
Section intitulée « Démarrer un cluster single-node »Le cas le plus simple : un seul nœud qui fait office de control-plane et de worker.
minikube start --driver=docker --cpus=2 --memory=2048 --profile=demo| Option | Description |
|---|---|
--driver=docker | Utilise Docker comme hyperviseur (recommandé) |
--cpus=2 | Alloue 2 CPU au cluster |
--memory=2048 | Alloue 2 Go de RAM |
--profile=demo | Nom du cluster (permet d’en avoir plusieurs) |
Vérification :
kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP OS-IMAGEdemo Ready control-plane 30s v1.34.0 192.168.49.2 Ubuntu 22.04.5 LTSminikube profile list|---------|--------|---------|--------------|---------|--------|-------|| Profile | Driver | Runtime | IP | Version | Status | Nodes ||---------|--------|---------|--------------|---------|--------|-------|| demo | docker | docker | 192.168.49.2 | v1.34.0 | OK | 1 ||---------|--------|---------|--------------|---------|--------|-------|Choisir le bon driver
Section intitulée « Choisir le bon driver »Le driver détermine comment Minikube crée les nœuds du cluster.
| Driver | OS | Performance | Cas d’usage |
|---|---|---|---|
| docker | Tous | ⭐⭐⭐ | Recommandé par défaut |
| kvm2 | Linux | ⭐⭐⭐⭐ | Meilleure isolation |
| hyperkit | macOS | ⭐⭐⭐ | Alternative à Docker Desktop |
| hyperv | Windows | ⭐⭐⭐ | Hyper-V natif |
| virtualbox | Tous | ⭐⭐ | Compatibilité maximale |
| podman | Linux | ⭐⭐⭐ | Alternative à Docker |
Définir un driver par défaut
Section intitulée « Définir un driver par défaut »minikube config set driver dockerVérifier le driver utilisé
Section intitulée « Vérifier le driver utilisé »minikube profile listLa colonne Driver indique le driver de chaque cluster.
Gérer plusieurs clusters avec les profils
Section intitulée « Gérer plusieurs clusters avec les profils »Un profil Minikube = un cluster Kubernetes indépendant. Chaque profil a ses propres ressources, son driver et sa configuration.
Créer plusieurs profils
Section intitulée « Créer plusieurs profils »# Cluster de développementminikube start --profile=dev --cpus=2 --memory=2048 --driver=docker
# Cluster de test avec plus de ressourcesminikube start --profile=test --cpus=4 --memory=4096 --driver=dockerLister les profils
Section intitulée « Lister les profils »minikube profile list|---------|--------|---------|--------------|---------|--------|-------|| Profile | Driver | Runtime | IP | Version | Status | Nodes ||---------|--------|---------|--------------|---------|--------|-------|| dev | docker | docker | 192.168.49.2 | v1.34.0 | OK | 1 || test | docker | docker | 192.168.58.2 | v1.34.0 | OK | 1 ||---------|--------|---------|--------------|---------|--------|-------|Basculer entre profils
Section intitulée « Basculer entre profils »minikube profile devCette commande configure aussi kubectl pour utiliser le bon contexte.
Vérification :
kubectl config current-contextdevSupprimer un profil
Section intitulée « Supprimer un profil »minikube delete --profile=testCluster multi-nœuds (workers)
Section intitulée « Cluster multi-nœuds (workers) »Pour simuler un environnement plus réaliste avec des workers dédiés :
minikube start --nodes=3 --driver=docker --cpus=2 --memory=2048 --profile=multinodeCette commande crée :
- 1 control-plane (multinode)
- 2 workers (multinode-m02, multinode-m03)
Vérification :
kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IPmultinode Ready control-plane 60s v1.34.0 192.168.49.2multinode-m02 Ready <none> 30s v1.34.0 192.168.49.3multinode-m03 Ready <none> 15s v1.34.0 192.168.49.4Ajouter un worker à un cluster existant
Section intitulée « Ajouter un worker à un cluster existant »minikube node add -p multinodeSupprimer un worker
Section intitulée « Supprimer un worker »minikube node delete m03 -p multinodeCluster HA (haute disponibilité)
Section intitulée « Cluster HA (haute disponibilité) »Le mode HA (High Availability) crée un cluster avec 3 control-planes, chacun exécutant son propre etcd. Cette topologie est identique à celle recommandée pour la production (stacked etcd).
Fonctionnement
Section intitulée « Fonctionnement »- kube-vip gère une IP virtuelle (VIP) partagée entre les 3 control-planes
- En mode ARP, kube-vip redirige le trafic vers le leader actuel
- Si le leader tombe, un autre control-plane prend le relais automatiquement
- Les 3 instances etcd se synchronisent entre elles
Créer un cluster HA
Section intitulée « Créer un cluster HA »minikube start --ha --driver=docker --cpus=2 --memory=2048 --profile=ha-demoLe démarrage prend quelques minutes (3 nœuds à provisionner).
Vérification :
kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IPha-demo Ready control-plane 60s v1.34.0 192.168.49.2ha-demo-m02 Ready control-plane 40s v1.34.0 192.168.49.3ha-demo-m03 Ready control-plane 20s v1.34.0 192.168.49.4minikube profile list|---------|--------|---------|----------------|---------|--------|-------|| Profile | Driver | Runtime | IP | Version | Status | Nodes ||---------|--------|---------|----------------|---------|--------|-------|| ha-demo | docker | docker | 192.168.49.254 | v1.34.0 | HAppy | 3 ||---------|--------|---------|----------------|---------|--------|-------|Vérifier kube-vip et etcd
Section intitulée « Vérifier kube-vip et etcd »# Pods kube-vip (un par control-plane)kubectl get pods -n kube-system | grep kube-vipkube-vip-ha-demo 1/1 Running 0 2mkube-vip-ha-demo-m02 1/1 Running 0 90skube-vip-ha-demo-m03 1/1 Running 0 60s# Pods etcd (un par control-plane)kubectl get pods -n kube-system | grep etcdetcd-ha-demo 1/1 Running 0 2metcd-ha-demo-m02 1/1 Running 0 90setcd-ha-demo-m03 1/1 Running 0 60sVérifier la VIP dans kubeconfig
Section intitulée « Vérifier la VIP dans kubeconfig »kubectl config view --minify | grep serverserver: https://192.168.49.254:8443L’IP 192.168.49.254 est la VIP gérée par kube-vip, pas l’IP d’un nœud spécifique.
Ajouter un worker au cluster HA
Section intitulée « Ajouter un worker au cluster HA »minikube node add -p ha-demokubectl get nodesNAME STATUS ROLES AGE VERSIONha-demo Ready control-plane 5m v1.34.0ha-demo-m02 Ready control-plane 4m v1.34.0ha-demo-m03 Ready control-plane 3m v1.34.0ha-demo-m05 Ready <none> 30s v1.34.0Simuler une panne de control-plane
Section intitulée « Simuler une panne de control-plane »# Supprimer un control-planeminikube node delete m02 -p ha-demominikube profile list|---------|--------|---------|----------------|---------|----------|-------|| Profile | Driver | Runtime | IP | Version | Status | Nodes ||---------|--------|---------|----------------|---------|----------|-------|| ha-demo | docker | docker | 192.168.49.254 | v1.34.0 | Degraded | 2 ||---------|--------|---------|----------------|---------|----------|-------|Le cluster passe en Degraded mais reste fonctionnel.
Restaurer un control-plane
Section intitulée « Restaurer un control-plane »minikube node add --control-plane -p ha-demoLe status revient à HAppy une fois le nœud synchronisé.
Utiliser kubectl avec Minikube
Section intitulée « Utiliser kubectl avec Minikube »kubectl intégré
Section intitulée « kubectl intégré »Si kubectl n’est pas installé, Minikube fournit une version intégrée :
minikube kubectl -- get nodesConfigurer kubectl
Section intitulée « Configurer kubectl »Minikube configure automatiquement le contexte kubectl lors du minikube start.
Pour basculer manuellement :
kubectl config use-context ha-demoVérifier l’état du cluster
Section intitulée « Vérifier l’état du cluster »kubectl cluster-infoKubernetes control plane is running at https://192.168.49.254:8443CoreDNS is running at https://192.168.49.254:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyAdd-ons utiles
Section intitulée « Add-ons utiles »Les add-ons sont des extensions prêtes à l’emploi. Minikube en propose plus de 40.
Lister les add-ons
Section intitulée « Lister les add-ons »minikube addons list -p ha-demo | grep -E "enabled|dashboard|ingress|metrics"| dashboard | ha-demo | disabled | Kubernetes || ingress | ha-demo | disabled | Kubernetes || metrics-server | ha-demo | disabled | Kubernetes |Add-ons recommandés
Section intitulée « Add-ons recommandés »| Add-on | Description | Commande |
|---|---|---|
| metrics-server | Métriques CPU/RAM pour kubectl top | minikube addons enable metrics-server |
| dashboard | Interface web Kubernetes | minikube addons enable dashboard |
| ingress | Contrôleur Ingress NGINX | minikube addons enable ingress |
Activer metrics-server
Section intitulée « Activer metrics-server »minikube addons enable metrics-server -p ha-demoVérification (après 1-2 minutes) :
kubectl top nodesNAME CPU(cores) CPU% MEMORY(bytes) MEMORY%ha-demo 150m 7% 1200Mi 60%ha-demo-m02 120m 6% 1100Mi 55%ha-demo-m03 110m 5% 1050Mi 52%Ouvrir le dashboard
Section intitulée « Ouvrir le dashboard »minikube dashboard -p ha-demoCette commande ouvre automatiquement le navigateur.
Charger des images locales
Section intitulée « Charger des images locales »Le problème : Vous avez buildé une image Docker sur votre machine, mais quand vous la déployez dans Minikube, Kubernetes ne la trouve pas.
Pourquoi ? Minikube utilise son propre daemon Docker (ou containerd) à l’intérieur du nœud. Votre image existe dans Docker sur l’hôte, pas dans le nœud Minikube. Ce sont deux environnements séparés.
Minikube propose plusieurs solutions, bien plus pratiques que Kind.
Méthode 1 : minikube image load (copier une image existante)
Section intitulée « Méthode 1 : minikube image load (copier une image existante) »Copie une image depuis Docker local vers le cache d’images Minikube :
# Builder votre image (dans Docker local)docker build -t mon-app:v1 .
# Copier vers Minikubeminikube image load mon-app:v1 -p demoVérifiez que l’image est disponible dans le cluster :
minikube image ls -p demo | grep mon-appdocker.io/library/mon-app:v1Déployer l’image :
apiVersion: v1kind: Podmetadata: name: testspec: containers: - name: app image: mon-app:v1 imagePullPolicy: Never # IMPORTANT : ne pas tenter de pullMéthode 2 : minikube image build (builder directement dans Minikube)
Section intitulée « Méthode 2 : minikube image build (builder directement dans Minikube) »Avantage majeur : Pas besoin de copier l’image — elle est buildée directement dans le nœud Minikube.
# Créer un Dockerfile de testcat > /tmp/Dockerfile << 'EOF'FROM nginx:alpineRUN echo "<h1>Built in Minikube!</h1>" > /usr/share/nginx/html/index.htmlEOF
# Builder directement dans Minikubeminikube image build -t my-nginx:v1 /tmp -p demo...Successfully built abc123def456Successfully tagged my-nginx:v1Vérifiez :
minikube image ls -p demo | grep my-nginxdocker.io/library/my-nginx:v1Quand utiliser image build vs image load ?
| Méthode | Cas d’usage |
|---|---|
image load | Vous avez déjà buildé l’image avec Docker |
image build | Vous voulez builder dans le contexte Minikube directement |
Exposer des services
Section intitulée « Exposer des services »Services NodePort
Section intitulée « Services NodePort »Minikube simplifie l’accès aux services NodePort :
# Déployer une appkubectl create deployment nginx --image=nginx:alpinekubectl expose deployment nginx --type=NodePort --port=80
# Obtenir l'URL d'accèsminikube service nginx --url -p demohttp://192.168.49.2:31234Pour ouvrir directement dans le navigateur :
minikube service nginx -p demoServices LoadBalancer avec minikube tunnel
Section intitulée « Services LoadBalancer avec minikube tunnel »Le problème : En production, un service de type LoadBalancer obtient une
IP externe du cloud provider. En local, Minikube ne peut pas attribuer d’IP —
votre service reste en EXTERNAL-IP: <pending> indéfiniment.
La solution : minikube tunnel crée un tunnel réseau qui attribue des IPs
externes aux services LoadBalancer.
-
Créer un service LoadBalancer :
Fenêtre de terminal kubectl create deployment echo --image=hashicorp/http-echo:0.2.3 \-- -text="Hello from Minikube"kubectl expose deployment echo --type=LoadBalancer --port=80 --target-port=5678Sans tunnel, le service reste en pending :
Fenêtre de terminal kubectl get svc echoNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEecho LoadBalancer 10.96.7.228 <pending> 80:31234/TCP 10s -
Lancer le tunnel (dans un terminal séparé) :
Fenêtre de terminal minikube tunnel -p demoLe tunnel demande le mot de passe sudo car il modifie les routes réseau.
-
Vérifier l’IP externe :
Fenêtre de terminal kubectl get svc echoNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEecho LoadBalancer 10.96.7.228 10.96.7.228 80:31234/TCP 30s -
Tester l’accès :
Fenêtre de terminal curl http://10.96.7.228Hello from Minikube
Partager des fichiers avec minikube mount
Section intitulée « Partager des fichiers avec minikube mount »Cas d’usage : Vous développez une application et voulez voir les modifications en temps réel sans rebuilder l’image à chaque changement.
minikube mount crée un montage réseau entre un dossier de votre machine et
le nœud Minikube.
-
Créer un dossier de test :
Fenêtre de terminal mkdir -p /tmp/minikube-shareecho "<h1>Hello from host!</h1>" > /tmp/minikube-share/index.html -
Monter le dossier (dans un terminal séparé) :
Fenêtre de terminal minikube mount /tmp/minikube-share:/mnt/share -p demo📁 Montage hôte /tmp/minikube-share dans VM en tant que /mnt/share...▪ Identifiant de montage: minikube-share▪ Options de montage: map[] -
Utiliser le montage dans un Pod :
pod-with-mount.yaml apiVersion: v1kind: Podmetadata:name: nginx-mountedspec:containers:- name: nginximage: nginx:alpinevolumeMounts:- name: host-filesmountPath: /usr/share/nginx/htmlvolumes:- name: host-fileshostPath:path: /mnt/share # Chemin DANS le nœud Minikubetype: DirectoryFenêtre de terminal kubectl apply -f pod-with-mount.yamlkubectl port-forward pod/nginx-mounted 8080:80 &curl http://localhost:8080<h1>Hello from host!</h1> -
Modifier le fichier sur l’hôte :
Fenêtre de terminal echo "<h1>Modified!</h1>" > /tmp/minikube-share/index.htmlcurl http://localhost:8080<h1>Modified!</h1>
Attention : Le montage utilise 9p sur réseau. C’est fonctionnel pour le développement mais pas pour des workloads intensifs en I/O.
Commandes essentielles
Section intitulée « Commandes essentielles »| Action | Commande |
|---|---|
| Démarrer un cluster | minikube start -p <profil> |
| Arrêter un cluster | minikube stop -p <profil> |
| Supprimer un cluster | minikube delete -p <profil> |
| Status d’un cluster | minikube status -p <profil> |
| SSH dans un nœud | minikube ssh -p <profil> |
| Logs Minikube | minikube logs -p <profil> |
| IP du cluster | minikube ip -p <profil> |
| Exposer un service | minikube service <nom> -p <profil> |
| Tunnel LoadBalancer | minikube tunnel -p <profil> |
| Charger une image | minikube image load <image> -p <profil> |
| Builder une image | minikube image build -t <tag> <path> -p <profil> |
| Lister les images | minikube image ls -p <profil> |
| Monter un dossier | minikube mount <local>:<distant> -p <profil> |
| Utiliser Docker Minikube | eval $(minikube docker-env -p <profil>) |
Dépannage
Section intitulée « Dépannage »Problèmes courants
Section intitulée « Problèmes courants »| Symptôme | Cause probable | Solution |
|---|---|---|
| ”Too many open files” | Limites inotify | sysctl fs.inotify.max_user_instances=512 |
| Nœud “NotReady” longtemps | Manque de RAM | Augmentez --memory, libérez de la RAM |
ImagePullBackOff image locale | imagePullPolicy: Always | Utilisez imagePullPolicy: Never |
LoadBalancer en <pending> | Pas de tunnel | Lancez minikube tunnel |
| Service inaccessible | Mauvaise IP | Utilisez minikube service --url |
minikube mount échoue | Firewall bloque 9p | Autorisez le port 37453 |
| Addon registry cassé | Bug v1.37.0 | Utilisez minikube image load à la place |
Erreur “Too many open files”
Section intitulée « Erreur “Too many open files” »Symptôme : Le nœud ne démarre pas avec l’erreur “Failed to create control group inotify object”.
Solution :
sudo sysctl -w fs.inotify.max_user_instances=512sudo sysctl -w fs.inotify.max_user_watches=524288Pour rendre permanent, ajoutez dans /etc/sysctl.conf :
fs.inotify.max_user_instances=512fs.inotify.max_user_watches=524288Erreur “kubelet is not healthy”
Section intitulée « Erreur “kubelet is not healthy” »Symptôme : Un nœud reste en “NotReady” pendant plusieurs minutes.
Diagnostic :
# Vérifier les ressources Dockerdocker stats --no-stream
# Voir les logs du nœudminikube logs -p <profil> | tail -50
# SSH et vérifier systemdminikube ssh -p <profil>systemctl status kubeletSolutions :
-
Augmentez la mémoire :
Fenêtre de terminal minikube delete -p <profil>minikube start --memory=4096 -p <profil> -
Vérifiez que Docker a assez de ressources (Docker Desktop → Preferences)
Image locale non trouvée (ImagePullBackOff)
Section intitulée « Image locale non trouvée (ImagePullBackOff) »Symptôme : Votre Pod reste en ImagePullBackOff alors que l’image existe.
Causes possibles :
- L’image est dans Docker local mais pas dans Minikube
imagePullPolicyn’est pas configuré
Solution :
# Vérifier que l'image est dans Minikubeminikube image ls -p demo | grep mon-app
# Si absente, la chargerminikube image load mon-app:v1 -p demo
# Vérifier le manifest# Doit avoir : imagePullPolicy: Never ou IfNotPresentCluster HA bloqué en “Starting”
Section intitulée « Cluster HA bloqué en “Starting” »Symptôme : Le 3ème control-plane ne démarre pas.
Solutions :
-
Augmentez les limites inotify (voir ci-dessus)
-
Libérez de la RAM (6 Go minimum pour 3 nœuds)
-
Supprimez et recréez :
Fenêtre de terminal minikube delete -p ha-demominikube start --ha -p ha-demo
minikube tunnel ne fonctionne pas
Section intitulée « minikube tunnel ne fonctionne pas »Symptôme : L’IP externe reste <pending> malgré le tunnel.
Diagnostic :
# Vérifier que le tunnel tourneps aux | grep "minikube tunnel"
# Vérifier les routesip route | grep 10.96Solutions :
-
Relancez le tunnel avec
--cleanup:Fenêtre de terminal minikube tunnel --cleanup -p demo -
Vérifiez qu’aucun autre tunnel ne tourne
Réinitialiser complètement Minikube
Section intitulée « Réinitialiser complètement Minikube »minikube delete --all --purgeCette commande supprime tous les clusters et le répertoire ~/.minikube.
À retenir
Section intitulée « À retenir »- Minikube crée des clusters Kubernetes locaux pour l’apprentissage et le dev
- Le driver docker est recommandé (léger), kvm2 pour l’isolation complète
- Les profils permettent de gérer plusieurs clusters indépendants
- Le mode multi-nœuds (
--nodes=N) simule un cluster avec workers - Le mode HA (
--ha) crée 3 control-planes avec kube-vip et etcd distribué minikube image loadcopie une image locale vers le clusterminikube image buildbuilde directement dans le nœud (plus simple)minikube tunnelattribue des IPs externes aux services LoadBalancerminikube mountpartage des fichiers entre l’hôte et le cluster- Les add-ons ajoutent des fonctionnalités (metrics, dashboard, ingress)
- Augmentez inotify pour les clusters multi-nœuds sur Linux