Comment démarrer un cluster Kubernetes local avec Minikube
Minikube est une distribution minimale de Kubernetes conçue pour une utilisation en développement local. Il est développé dans le cadre du projet Kubernetes et comprend des implémentations de toutes les principales fonctionnalités du cluster.
Minikube fonctionne sur les hôtes Linux, Mac et Windows. Il peut utiliser des conteneurs ou un environnement de machine virtuelle pour exécuter votre cluster et ses charges de travail. Voici tous les runtimes pris en charge :
- Docker
- Podman
- KVM
- Hyper-V
- Hyperkit
- Parallèles
- VirtualBox
- VMware
Assurez-vous que l’une de ces technologies est installée avant de poursuivre avec ce guide. Le processus d’installation de Minikube détectera automatiquement les runtimes disponibles et appliquera une configuration appropriée. Nous vous montrerons comment terminer votre déploiement et commencer à utiliser Minikube.
Sommaire
Installation de Minikube
Nous nous concentrons sur les systèmes Linux x86 dans ce guide. Si vous utilisez Windows, Mac ou une plate-forme CPU différente, reportez-vous à la documentation Minikube pour obtenir les informations de configuration les plus détaillées. Après la procédure d’installation initiale, l’utilisation de base de Minikube est identique sur tous les systèmes pris en charge.
Les utilisateurs de Linux peuvent choisir entre un téléchargement binaire direct ou un package Debian/RPM. Nous utiliserons le téléchargement binaire dans cet exemple.
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 $ sudo install minikube-linux-amd64 /usr/local/bin/minikube
Minikube sera maintenant installé et prêt à être utilisé.
Démarrage de votre cluster Kubernetes
Lancez votre cluster Minikube avec le minikube start
commande:
$ minikube start minikube v1.25.2 on Ubuntu 20.04 Automatically selected the docker driver. Other choices: kvm2, ssh Starting control plane node minikube in cluster minikube Pulling base image ... Downloading Kubernetes v1.23.3 preload ...
Minikube téléchargera et démarrera automatiquement la dernière version de Kubernetes. Ce processus peut prendre plusieurs minutes. La sortie de la commande indiquera la progression et montrera les actions entreprises par Minikube. Dans l’exemple ci-dessus, vous pouvez voir que le pilote Docker a été sélectionné pour héberger votre cluster. Consultez la documentation du pilote de Minikube si votre plate-forme de conteneur ou votre pile de virtualisation n’est pas automatiquement détectée.
Utiliser votre cluster avec Kubectl
Minikube modifie votre environnement afin que vous puissiez vous connecter à votre cluster à l’aide d’une installation Kubectl existante. Cela ajoutera un minikube
contexte à votre KUBECONFIG
fichier qui cible votre cluster Minikube.
Minikube comprend également une version groupée de Kubectl à laquelle vous pouvez accéder avec le minikube kubectl
commande. Ceci est utile si vous n’avez pas déjà installé Kubectl ou si votre binaire existant est une version différente de votre cluster Minikube.
# Uses the Kubectl version that's bundled with Minikube $ minikube kubectl get pods
Pour le reste de ce guide, nous allons montrer la plaine kubectl
commande et supposons qu’il cible votre cluster Minikube. Vous pouvez configurer un alias de shell pour utiliser le Kubectl fourni par Minikube sans le préfixer avec minikube
chaque fois:
$ alias kubectl="minikube kubectl"
Avec Minikube live et Kubectl disponibles, vous pouvez désormais ajouter des applications à votre cluster Kubernetes :
$ kubectl create deployment nginx --image=nginx:latest deployment.apps/nginx created $ kubectl expose deployment nginx --type=LoadBalancer --port=80 service/nginx exposed
La minikube service
La commande fournit l’URL exposée d’un service :
$ minikube service nginx --url http://192.168.49.2:31599
Collez l’URL dans votre navigateur Web (ou exécutez la commande sans le --url
flag) pour afficher votre service.
Accéder au tableau de bord Kubernetes
Minikube fournit le tableau de bord Kubernetes en tant que fonctionnalité intégrée facultative. Exécutez le minikube dashboard
pour télécharger les composants du tableau de bord et lancer l’interface dans un nouvel onglet du navigateur.
Vous pouvez utiliser le tableau de bord pour gérer vos ressources et visualiser leur activité. Garder le minikube dashboard
commande s’exécutant dans votre terminal pendant que vous interagissez avec le tableau de bord. Terminez la commande avec la séquence de touches Ctrl+C lorsque vous avez terminé.
Activation du registre d’images
Minikube inclut un registre d’images en tant qu’addon facultatif. Cela vous permet de stocker vos images de conteneurs dans Minikube, les rendant disponibles pour un déploiement dans votre cluster.
Activez d’abord l’addon de registre :
$ minikube addons enable registry
Marquez ensuite votre image afin qu’elle fasse référence au registre Minikube. Le registre écoute sur le port 5000 sur l’adresse IP fournie par le minikube ip
commande.
$ docker tag my-image:latest $(minikube ip):5000/my-image:latest
Avant de pouvoir pousser, Docker doit être configuré pour accepter l’URL en tant que registre non sécurisé. Ajoutez-le au insecure-registries
champ à l’intérieur de votre /etc/docker/daemon.json
fichier afin que Docker autorise l’accès HTTP.
{ "insecure-registries": ["192.168.49.2:5000"] }
Remplacez l’adresse IP par celle indiquée par votre minikube ip
commande. Redémarrez Docker avec le systemctl restart docker
commande.
Vous pouvez maintenant envoyer votre image dans votre registre Minikube :
$ docker push $(minikube ip):5000/my-image:latest
Une dernière étape est requise avant que les pods de votre cluster puissent utiliser cette image. L’environnement d’exécution du conteneur de Minikube doit également être configuré pour autoriser un accès non sécurisé au registre. Vous pouvez l’activer en incluant le --insecure-registry
drapeau quand vous courez minikube start
. L’adresse IP doit faire référence à l’adresse IP par défaut du cluster de votre installation Minikube. Vous pouvez l’obtenir en exécutant kubectl get services
et regardant le CLUSTER-IP
pour le kubernetes
service. Ensuite, arrêtez Minikube et redémarrez-le avec le drapeau supplémentaire.
$ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 63m $ minikube stop $ minikube start --insecure-registry 10.96.0.1/24
Modification de la version de Kubernetes
Minikube utilise par défaut la dernière version disponible de Kubernetes. Pour passer à une version spécifique, incluez le --kubernetes-version
drapeau lorsque vous démarrez votre cluster :
$ minikube start --kubernetes-version=v1.23.0
Vous pouvez exécuter plusieurs clusters en même temps, chacun avec différentes versions de Kubernetes, en créant plusieurs profils distincts. La --profile
flag sélectionne le profil à cibler pour une commande particulière.
$ minikube start --profile v1.22 --kubernetes-version=v1.22.0 $ minikube start --profile v1.23 --kubernetes-version=v1.23.0 $ minikube --profile v1.22 kubectl get pods
Utilisation de plusieurs nœuds
Minikube prend en charge plusieurs nœuds virtuels. Cela vous permet de tester la façon dont votre application évolue sur les nœuds disponibles sans déployer de nouveau matériel physique.
Cet exemple crée un cluster avec trois nœuds :
$ minikube start --nodes 3
Vous pouvez vérifier que plusieurs nœuds sont disponibles en les répertoriant avec Kubectl :
$ kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready control-plane,master 71m v1.23.3 minikube-m02 Ready <none> 71m v1.23.3 minikube-m03 Ready <none> 71m v1.23.3
Activation de l’accès à distance
Minikube n’accepte pas le trafic entrant par défaut. Il est conçu pour une utilisation locale et n’est pas renforcé pour répondre aux demandes externes. Vous pouvez toujours activer l’accès à distance aux charges de travail dans votre cluster en modifiant l’adresse d’écoute du plan de contrôle. Ne faites cela qu’après avoir pleinement évalué les risques – votre réseau sera exposé au monde extérieur.
$ minikube start --listen-address=0.0.0.0
La redirection de port est une solution plus sûre lorsque vous devez ouvrir l’accès à un service spécifique. Utilisez Kubectl port-forward
pour créer une route depuis un port hôte vers l’un de vos services :
$ kubectl port-forward service/nginx 8080:80
Vous pouvez maintenant visiter localhost:8080
pour accéder au service NGINX créé précédemment dans ce guide. Le port 8080 de votre hôte est lié au port 80 du service.
Retrait de Minikube
L’un des avantages de Minikube est sa facilité de retrait. Si vous décidez que Minikube n’est pas pour vous, lancez le delete
commande pour supprimer tout ce qu’elle a ajouté à votre système :
$ minikube delete
Une option moins destructrice est minikube stop
qui arrêtera votre cluster mais laissera toutes les ressources intactes. Vous pouvez redémarrer votre cluster à l’aide de minikube start
commande.
Conclusion
Minikube est une distribution Kubernetes autonome qui utilise des conteneurs ou la virtualisation pour exécuter un cluster sur votre machine locale. Il est pris en charge par le projet Kubernetes en amont. Minikube est une implémentation Kubernetes complète qui regroupe le tableau de bord Kubernetes, la prise en charge de la mise en réseau, le stockage persistant et les runtimes de conteneurs interchangeables.
Vous pouvez en savoir plus sur Minikube dans la documentation officielle. Vous pouvez également commencer à utiliser les commandes Kubectl familières pour gérer votre cluster et déployer de nouvelles charges de travail. Vous disposez maintenant d’un environnement Kubernetes local entièrement fonctionnel pour créer et tester vos applications.