Aller au contenu

Se former à Kubernetes avec Minikube

Mise à jour :

logo minikube

Quand on pense à Kubernetes, on l’associe souvent à des déploiements complexes en production. Mais que faire si on veut simplement tester une configuration, apprendre les bases ou développer localement sans avoir besoin d’un cluster complet ? C’est là que Minikube intervient !

Minikube, c’est un outil génial qui permet de créer un cluster Kubernetes directement sur votre machine. Pas besoin d’un cloud ou d’une infrastructure sophistiquée : en quelques commandes, vous avez un cluster fonctionnel, prêt à accueillir vos tests et vos applications.

Historique de Minikube

Minikube est né d’un constat simple : Kubernetes, aussi puissant soit-il, était difficile à manipuler pour les développeurs souhaitant tester ou apprendre en local. Avant son arrivée, il fallait monter des clusters complexes sur des machines physiques ou des VM, ce qui était laborieux et souvent coûteux.

Lancé en 2016 par la Cloud Native Computing Foundation (CNCF), Minikube a rapidement conquis les développeurs grâce à sa simplicité. À l’époque, Kubernetes devenait le standard pour l’orchestration de conteneurs, mais les outils pour l’explorer en local étaient rares. Minikube a comblé ce vide en permettant de lancer un cluster Kubernetes complet avec une seule commande, directement sur un ordinateur portable.

Avec le temps, Minikube a évolué pour répondre aux besoins croissants des utilisateurs. Des fonctionnalités comme le support des drivers multiples (Docker, VirtualBox, etc.), les add-ons intégrés ou encore la gestion des clusters multi-nœuds sont venues enrichir l’expérience. Aujourd’hui, Minikube reste un choix populaire, malgré la montée d’outils alternatifs comme K3s ou des solutions basées sur des conteneurs comme Kind (Kubernetes in Docker).

En somme, Minikube représente un équilibre parfait entre simplicité et puissance, et reste une étape incontournable pour quiconque veut s’initier à Kubernetes.

Installation de Minikube

Passons aux choses concrètes : installer Minikube. Vous allez voir, c’est rapide et simple, quel que soit votre système d’exploitation. Suivez ces étapes pour préparer votre environnement.

Vérification des prérequis

Avant de commencer, assurez-vous d’avoir :

  • Un minimum de 2 CPU, 2 Go de RAM et 20 Go d’espace disque.
  • En fonction du driver choisi, Docker ou VirtualBox installé.
    • Un processeur compatible avec la virtualisation (VT-x ou AMD-V).
    • Docker installé (selon le driver choisi).
  • kubectl installé pour interagir avec le cluster.

Pour vérifier si la virtualisation est activée, exécutez ces commandes :

Sur Linux :

Terminal window
egrep -q 'vmx|svm' /proc/cpuinfo && echo "Virtualisation activée" || echo "Activez-la dans le BIOS"

Sur Windows : Exécutez msinfo32 et vérifiez si “Virtualization Enabled” est sur Oui.

Installation de Minikube sur Linux

Téléchargez le binaire et ajoutez-le à votre $PATH :

Terminal window
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

Installation de Minikube sur MacOS

Utilisez Homebrew pour l’installation :

Terminal window
brew install minikube

Installation de Minikube sur Windows

Téléchargez l’exécutable depuis le site officiel ou utilisez choco :

Terminal window
choco install minikube

Vérification de l’installation

Vous pouvez vérifier que tout fonctionne avec :

Terminal window
minikube version
minikube version: v1.34.0
commit: 210b148df93a80eb872ecbeb7e35281b3c582c61

Démarrage d’un cluster Minikube basique

Maintenant que Minikube est installé, vous pouvez lancer votre premier cluster Kubernetes. Voici comment faire :

Terminal window
minikube start

Lors du démarrage du cluster, vous pouvez ajuster les ressources CPU, RAM et disque allouées :

Terminal window
minikube start --cpus=4 --memory=8192 --disk-size=30g

Cela attribue 4 CPU, 8 Go de RAM et 30 Go d’espace disque au cluster.

Pour augmenter ou diminuer les ressources d’un cluster existant :

Utilisez la commande minikube config :

Terminal window
minikube config set memory 4096
minikube config set cpus 2

Puis redémarrez le cluster pour appliquer les changements :

Terminal window
minikube stop
minikube start

Choix et utilisation des drivers

Configurer un cluster Minikube offre une grande flexibilité, notamment grâce à ses nombreux drivers. Ces drivers déterminent comment Kubernetes s’exécute sur votre machine.

Minikube supporte plusieurs drivers, adaptés à différents systèmes et cas d’utilisation :

  • Docker : Léger, rapide et recommandé si Docker est déjà installé.
  • VirtualBox : Idéal pour un environnement universel si Docker n’est pas disponible.
  • KVM2 (Linux) : Haute performance sur Linux.
  • Hyper-V (Windows) : Bonne alternative pour Windows.
  • Podman : Pour ceux qui utilisent Podman au lieu de Docker.

Minikube permet de spécifier le driver lors du démarrage du cluster. Par exemple :

Terminal window
minikube start --driver=docker

Vous pouvez aussi définir un driver par défaut pour éviter de le spécifier à chaque démarrage :

Terminal window
minikube config set driver kvm2
minkube start

Après avoir démarré votre cluster, vérifiez quel driver est utilisé :

Terminal window
minikube profile list
|----------|-----------|---------|---------------|------|---------|---------|-------|----------------|--------------------|
| Profile | VM Driver | Runtime | IP | Port | Version | Status | Nodes | Active Profile | Active Kubecontext |
|----------|-----------|---------|---------------|------|---------|---------|-------|----------------|--------------------|
| minikube | kvm2 | docker | 192.168.39.37 | 8443 | v1.31.0 | Running | 1 | * | * |
|----------|-----------|---------|---------------|------|---------|---------|-------|----------------|--------------------|

Cela affichera les profils Minikube et les drivers associés.

Profils Minikube

Les profils de Minikube permettent de gérer plusieurs clusters Kubernetes sur la même machine. Chaque profil représente une configuration de cluster unique, avec son propre contexte et ses propres ressources. C’est idéal pour tester différents environnements ou pour exécuter plusieurs projets en parallèle.

Un profil dans Minikube est un cluster Kubernetes indépendant. Chaque profil possède :

  • Son propre nom.
  • Ses propres paramètres (CPU, RAM, drivers, etc.).
  • Un contexte Kubernetes distinct.

Cela permet de créer et de basculer facilement entre différents clusters.

Pour créer un cluster avec un profil spécifique, utilisez l’option --profile lors du démarrage :

Terminal window
minikube start --profile=docker --driver=docker

Créer un cluster nommé test-env avec des paramètres personnalisés :

Terminal window
minikube start --profile=kvm --cpus=4 --memory=8192 --driver=kvm2

Ce cluster sera enregistré sous le profil test-env, distinct du profil par défaut minikube.

Pour voir tous les profils disponibles, utilisez la commande :

Terminal window
minikube profile list
|---------|-----------|---------|----------------|------|---------|---------|-------|----------------|--------------------|
| Profile | VM Driver | Runtime | IP | Port | Version | Status | Nodes | Active Profile | Active Kubecontext |
|---------|-----------|---------|----------------|------|---------|---------|-------|----------------|--------------------|
| docker | docker | docker | 192.168.49.2 | 8443 | v1.31.0 | Running | 1 | | |
| kvm | kvm2 | docker | 192.168.39.139 | 8443 | v1.31.0 | Running | 1 | | * |
|---------|-----------|---------|----------------|------|---------|---------|-------|----------------|--------------------|

Minikube configure automatiquement le contexte Kubernetes en fonction du profil actif. Pour basculer vers un autre profil, utilisez :

Terminal window
minikube profile docker
Le profil de minikube a été défini avec succès sur docker

Vérifiez ensuite le contexte actif avec :

Terminal window
kubectl config current-context
docker

Pour supprimer un profil et son cluster associé, utilisez :

Terminal window
minikube delete --profile=kvm

Utilisation de kubectl avec Minikube

kubectl est l’outil en ligne de commande officiel pour interagir avec un cluster Kubernetes. Avec Minikube, kubectl est indispensable pour gérer vos ressources (pods, services, déploiements). Si kubectl n’est pas déjà installé sur votre machine, pas de panique : Minikube vous offre une version intégrée que vous pouvez utiliser directement. Voici comment exploiter tout cela.

Une fois kubectl opérationnel, la première chose à faire est de vérifier l’état de votre cluster. Avec kubectl :

Terminal window
kubectl cluster-info
Kubernetes control plane is running at https://192.168.39.37:8443
CoreDNS is running at https://192.168.39.37:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Cela affiche des informations sur les composants principaux de Kubernetes (API Server, Scheduler, etc.).

Si vous utilisez le kubectl de Minikube :

Terminal window
minikube kubectl -- cluster-infominikube kubectl -- cluster-info
Kubernetes control plane is running at https://192.168.39.37:8443
CoreDNS is running at https://192.168.39.37:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Les Add-ons Minikube

Les add-ons sont l’une des fonctionnalités les plus intéressantes de Minikube. Ils permettent d’ajouter des fonctionnalités supplémentaires à votre cluster local, comme un dashboard, la gestion des métriques, ou encore des outils de surveillance comme Prometheus et Grafana. Ces modules intégrés simplifient les expérimentations avec Kubernetes.

Quelques exemples populaires :

  • Dashboard : Interface graphique pour gérer vos ressources Kubernetes.
  • Ingress : Gérer les entrées HTTP/HTTPS.
  • Metrics Server : Collecte et affichage des métriques de performance.

Pour afficher tous les add-ons que Minikube propose, utilisez la commande :

Terminal window
minikube addons list
|-----------------------------|----------|--------------|--------------------------------|
| ADDON NAME | PROFILE | STATUS | MAINTAINER |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador | minikube | disabled | 3rd party (Ambassador) |
| auto-pause | minikube | disabled | minikube |
| cloud-spanner | minikube | disabled | Google |
| csi-hostpath-driver | minikube | disabled | Kubernetes |
| dashboard | minikube | enabled | Kubernetes |
| default-storageclass | minikube | enabled | Kubernetes |
| efk | minikube | disabled | 3rd party (Elastic) |
| freshpod | minikube | disabled | Google |
| gcp-auth | minikube | disabled | Google |
| gvisor | minikube | disabled | minikube |
| headlamp | minikube | disabled | 3rd party (kinvolk.io) |
| helm-tiller | minikube | disabled | 3rd party (Helm) |
| inaccel | minikube | disabled | 3rd party (InAccel |
| | | | [info@inaccel.com]) |
| ingress | minikube | disabled | Kubernetes |
| ingress-dns | minikube | disabled | minikube |
| inspektor-gadget | minikube | disabled | 3rd party |
| | | | (inspektor-gadget.io) |
| istio | minikube | disabled | 3rd party (Istio) |
| istio-provisioner | minikube | disabled | 3rd party (Istio) |
| kong | minikube | disabled | 3rd party (Kong HQ) |
| kubeflow | minikube | disabled | 3rd party |
| kubevirt | minikube | disabled | 3rd party (KubeVirt) |
| logviewer | minikube | disabled | 3rd party (unknown) |
| metallb | minikube | disabled | 3rd party (MetalLB) |
| metrics-server | minikube | disabled | Kubernetes |
| nvidia-device-plugin | minikube | disabled | 3rd party (NVIDIA) |
| nvidia-driver-installer | minikube | disabled | 3rd party (NVIDIA) |
| nvidia-gpu-device-plugin | minikube | disabled | 3rd party (NVIDIA) |
| olm | minikube | disabled | 3rd party (Operator Framework) |
| pod-security-policy | minikube | disabled | 3rd party (unknown) |
| portainer | minikube | disabled | 3rd party (Portainer.io) |
| registry | minikube | disabled | minikube |
| registry-aliases | minikube | disabled | 3rd party (unknown) |
| registry-creds | minikube | disabled | 3rd party (UPMC Enterprises) |
| storage-provisioner | minikube | enabled | minikube |
| storage-provisioner-gluster | minikube | disabled | 3rd party (Gluster) |
| storage-provisioner-rancher | minikube | disabled | 3rd party (Rancher) |
| volcano | minikube | disabled | third-party (volcano) |
| volumesnapshots | minikube | disabled | Kubernetes |
| yakd | minikube | disabled | 3rd party (marcnuri.com) |
|-----------------------------|----------|--------------|--------------------------------|

Pour activer un add-on, utilisez la commande suivante :

Terminal window
minikube addons enable ingress
💡 ingress est un addon maintenu par Kubernetes. Pour toute question, contactez minikube sur GitHub.
Vous pouvez consulter la liste des mainteneurs de minikube sur : https://github.com/kubernetes/minikube/blob/master/OWNERS
Utilisation de l'image registry.k8s.io/ingress-nginx/controller:v1.11.2
▪ Utilisation de l'image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.3
Utilisation de l'image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.3
🔎 Vérification du module ingress...
🌟 Le module 'ingress' est activé

Si vous n’avez plus besoin d’un add-on, désactivez-le pour économiser des ressources :

Terminal window
minikube addons disable dashboard

Conclusion

Minikube, c’est un peu comme un couteau suisse pour quiconque veut explorer ou maîtriser Kubernetes. Que vous soyez un développeur en quête d’un environnement de test rapide, ou un administrateur système cherchant à expérimenter avec des configurations avancées, Minikube a tout pour plaire.

Grâce à sa gestion des profils, il permet de créer et d’exécuter plusieurs clusters isolés, chacun avec ses propres paramètres. Vous pouvez ainsi passer d’un projet à un autre ou tester différentes versions de Kubernetes sans difficulté. C’est une fonctionnalité qui, à mon avis, est essentielle pour quiconque travaille sur plusieurs projets ou environnements.

Et que dire des add-ons ? Avec des modules comme le dashboard, Ingress, ou encore Metrics Server, Minikube transforme un simple cluster en une véritable plateforme de test et de développement. Ces outils intégrés vous permettent de simuler des environnements proches de la production, tout en restant dans le confort de votre machine locale.

En résumé, Minikube est un outil incontournable pour comprendre et manipuler Kubernetes. Sa simplicité d’installation, sa flexibilité avec les drivers, et ses fonctionnalités avancées comme les profils et les add-ons en font un allié précieux pour tous les passionnés d’infrastructure. Alors, à vous de jouer : lancez un cluster, activez un add-on, créez un profil, et plongez dans l’univers Kubernetes !