Introduction
Pour les utilisateurs qui souhaitent essayer Kubernetes au quotidien, il existe une multitude de solutions dont la solution Minikube.
Minikube est un outil facilitant l’exécution locale de Kubernetes. Il exécute un cluster Kubernetes à nœud unique dans une machine virtuelle (VM), dès lors votre VM devient à la fois un nœud de type Master et Worker.
Prérequis
Hyperviseur
On va d'abord commencer par vérifier si la virtualisation est prise en charge sous notre machine Linux :
# egrep --color 'vmx|svm' /proc/cpuinfo
Vérifiez ensuite que la sortie est non vide. Si c'est bien le cas, alors vous pouvez passer à l'étape suivante.
La prochaine étape consiste à installer un hyperviseur, dans mon cas je vais utiliser VirtualBox.
kubectl
Il est recommandé au préalable d'installer kubectl, afin d'interagir avec notre cluster Kubernetes.
Pour ce faire, premièrement commençons par installer le binaire kubectl :
# curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-# release/release/stable.txt)/bin/linux/amd64/kubectl && \ # chmod +x kubectl
Après cela, déplaçons le binaire kubectl dans le dossier d'exécution des utilisateurs :
# sudo mv ./kubectl /usr/local/bin/kubectl
Enfin, testons notre installation en vérifiant la version de kubectl :
# kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:18:22Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Installation de Minikube
Une fois les prérequis satisfaits, on peut à ce moment-là, passer à l'étape d'installation de Minikube. À cet effet, nous allons commencer par télécharger le binaire Minikube, comme suit :
# curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \ && chmod +x minikube
Déplaçons ensuite l’exécutable Minikube dans le dossier binaire des utilisateurs :
# sudo mv minikube /usr/local/bin
Analysons ensuite le bon déroulement de notre installation en révélant la version de notre Minikube :
# minikube version minikube version: v1.2.0
Création du cluster Kubernetes avec Minikube
À présent, il est temps de démarrer Minikube afin de créer notre premier cluster Kubernetes. La commande que nous allons exécuter va créer et configurer une machine virtuelle qui exécute un cluster Kubernetes à un seul nœud, elle configurera également notre installation de kubectl de manière à communiquer avec notre cluster.
# minikube start
😄 minikube v1.2.0 on linux (amd64)
💿 Downloading Minikube ISO ...
129.33 MB / 129.33 MB [============================================] 100.00% 0s
🔥 Creating virtualbox VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...
🐳 Configuring environment for Kubernetes v1.15.0 on Docker 18.09.6
💾 Downloading kubeadm v1.15.0
💾 Downloading kubelet v1.15.0
🚜 Pulling images ...
🚀 Launching Kubernetes ...
⌛ Verifying: apiserver proxy etcd scheduler controller dns
🏄 Done! kubectl is now configured to use "minikube"
Si on retourne sur virtualbox, on peut voir notre nouvelle VM fraîchement créée.
Manipulation du cluster Kubernetes avec Minikube
Commençons par vérifier l'état de notre cluster Kubernetes, comme suit :
# minikube status host: Running kubelet: Running apiserver: Running kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.105
On va utiliser l'outil kubectl afin de récupérer la liste des nœuds de notre cluster Kubernetes :
# kubectl get nodes
Sans aucune surprise, on ne récupère qu'un seul nœud de type Master :
NAME STATUS ROLES AGE VERSION minikube Ready master 15m v1.15.0
Nous pouvons aussi récupérer des informations sur notre cluster Kubernetes grâce à la commande ci-dessous :
# kubectl cluster-info Kubernetes master is running at https://192.168.99.105:8443 KubeDNS is running at https://192.168.99.105:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy <code> Si jamais, vous rencontrez quelques soucis avec votre cluster Kubernetes, n'hésitez alors pas à fouiller dans les logs de Minikube afin de connaître la source du problème : <code> minikube logs
Pour information, cette commande vient avec trois options qui peuvent vous être bien utiles :
- -f ou –follow : suivre en permanence les logs de Minikube (correspond à un tail -f sous Linux)
- -n ou –length : nombre de lignes à afficher (50 par défaut)
- –problems : afficher uniquement les logs qui pointent vers des problèmes connus
Vous n'aurez nullement besoin de vous connecter à la VM Minikube, mais si l'envie vous en dit, alors voici la commande destinée à se connecter directement en ssh à votre nœud Minikube :
# minikube ssh
_ _
_ _ ( ) ( )
___ ___ (_) ___ (_)| |/') _ _ | |_ __
/' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
$
De la même façon, vous pouvez aussi vérifier si votre minikube est à jour de la façon suivante :
# minikube update-check CurrentVersion: v1.2.0 LatestVersion: v1.2.0
Note:
Si votre version n'est pas à jour, il suffit alors de reproduire la procédure de téléchargement de Minikube, vue précédemment.
Kubernetes Dashboard
Il existait deux façons pour communiquer avec un cluster Kubernetes, soit comme vu antérieurement, en utilisant le binaire kubectl, soit depuis une interface web de management nommé Dashboard. Ça tombe bien car minikube a pensé à nous, dans l'intention de nous faciliter le lancement d'un Dashboard :
# minikube dashboard 🔌 Enabling dashboard ... 🤔 Verifying dashboard health ... 🚀 Launching proxy ... 🤔 Verifying proxy health ... 🎉 Opening http://127.0.0.1:34751/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/ in your default browser... Fontconfig warning: "/usr/share/fontconfig/conf.avail/05-reset-dirs-sample.conf", line 6: unknown element "reset-dirs" [9491:9511:0731/234116.883991:ERROR:browser_process_sub_thread.cc(203)] Waited 5 ms for network service Ouverture dans une session de navigateur existante.
Vous n'avez plus besoin de votre cluster Kubernetes, et vous souhaitez vous en débarrasser facilement ? Pas de soucis, challenge accepted ! Vous pouvez facilement sans aucune résistance supprimer votre cluster Minikube, à l'aide de la commande suivante :
# minikube delete 🔥 Deleting "minikube" from virtualbox ... 💔 The "minikube" cluster has been deleted.
Conclusion
Il faut bien l'avouer, Minikube reste un outil qui facilite grandement le provisionnement et la gestion des clusters Kubernetes à un seul nœud. C'est l'outil idéal pour tester et découvrir l'orchestrateur Kubernetes, de ce fait il est optimisé pour des flux de travail en mode test/développement.
Annexe
https://minikube.sigs.k8s.io/docs/start/
# Modifier la config minikube
minikube config
minikube config set memory 1024 : Exemple pour reconfigurer la mémoire vive
# Accéder à l'interface web d'administration Kubernetes
minikube dashboard
# Récupérer l'adresse IP du cluster en cours d'exécution
minikube ip
# Obtenir les logs de l'instance en cours d'exécution pour du débogage
minikube logs
-f ou --follow : Suivre en permanence les logs de Minikube
-n ou --length : Nombre de lignes à afficher (50 par défaut)
--problems : Afficher uniquement les logs qui pointent vers des problèmes connus
# Se connecter en ssh sur le nœud Minikube
minikube ssh
# Démarrer un cluster Kubernetes local
minikube start
--cpu <int> : Nombre de processeurs alloués au minikube VM (2 par défaut)
--disk-size <string> : Taille de disque allouée à la VM minikube (format <number[<unit>], où unité = b, k, m or g) (par défaut "20g")
--memory <int> : Quantité de RAM allouée à la VM mini-cube en Mo (par défaut 2048)
--vm-driver <string> : Hyperviseur à utiliser (par défaut VirtualBox)
# Supprimer un cluster Kubernetes local
minikube delete
# Obtenir le statut d'un cluster Kubernetes local
minikube status
# Arrêter un cluster Kubernetes en cours d'exécution
minikube stop
# Afficher le numéro de la version actuelle et la plus récente de Minikube
minikube update-check
# Afficher la version de Minikube
minikube version