Aller au contenu

Installer kubernetes sur Windows

logo kubernetes

Depuis l’annonce de la fin de la gratuité de Docker Desktop pour les entreprises, je cherche une solution pour le remplacer. Et pour le moment je ne trouve pas mon bonheur et oui, je dois construire des images à base de Windows.

Pour ceux qui sont à la recherche d’une implémentation de kubernetes sur un poste de développement pour construire des solutions à base de Linux, Minikube est une belle solution. Il peut facilement servir de base pour une formation à kubernetes.

Minikube utilise hyper-v ou wls2 comme hyperviseur et donc une mini distribution dédiée pour faire tourner le cluster kubernetes. Ma préférence va à la solution hyper-v, car bien plus performante que celle de wsl2 et surtout moins de contraintes (ipv6, virtualisation imbriquée, …).

Installation de minikube sur Windows

Le plus simple est d’utiliser chocolatey. Dans une fenêtre powershell ouverte avec les droits admin tapez la commande suivante :

Terminal window
choco install -y minikube

Si vous n’avez pas activé hyper-v dans la même fenêtre powershell admin :

Terminal window
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V

S’il est installé, mais désactivé :

Terminal window
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Une fois installée attention à ne pas démarrer votre minikube dans la même fenêtre powershell. En effet, pas besoin des droits admin pour démarrer l’instance minikube. Si WSL2 est activé il l’utilisera sinon il tentera alors sous hyper-v. On peut forcer le choix en ajoutant à la fin de la commande --driver=hyperv.

Terminal window
minikube start --driver=hyperv
👍 Starting control plane node minikube in cluster minikube
🐳 Preparing Kubernetes v1.19.2 on Docker 19.03.12 ...
🔎 Verifying Kubernetes components...
🌟 Enabled addons: default-storageclass, storage-provisioner
🏄 Done! kubectl is now configured to use "minikube" by default

Ensuite il est possible d’utiliser la classique commande kubectl pour manager votre cluster

Terminal window
kubectl get namespace -o yaml
kubectl get nodes o wide

Pour réinitialiser le cluster le plus simple est de le détruire.

Terminal window
minikube delete
🔥 Deleting "minikube" ...
💀 Removed all traces of the "minikube" cluster.

Construire des images docker

Il est possible d’utiliser les ressources du cluster pour construire des images Docker. Pour cela il faut installer la cli de docker, le lien étant difficile à trouver le voici : https://download.docker.com/win/static/stable/x86_64/

Je vous conseille de l’installer dans le même répertoire que minikube: C:\Program Files\Kubernetes\Minikube

Dans une fenêtre powershell, il faut activer l’environnement docker :

Terminal window
minikube -p minikube docker-env | Invoke-Expression

A partir de là, vous pouvez lancer les commandes classiques de docker:

Terminal window
docker images
docker build -t bandit:1.7.0 .
docker run -it alpine:3.14 sh

Mais attention, il est seulement possible de faire tourner des images avec un noyau Linux. Et c’est là que ça coince pour moi.

Mais voilà en regardant dans l’archive, on trouve quoi dockerd. Je ferais un billet.zip