Créer un cluster Kubernetes local avec Kind (Kubernetes IN Docker)
Kind (Kubernetes IN Docker) est un outil permettant de faire fonctionner des clusters Kubernetes sur votre machine locale en utilisant des conteneurs Docker. Il a été conçu pour faciliter la mise en place et l'exécution d'un cluster Kubernetes local pour des fins de développement et de test.
Dans cet article, nous vous montrerons comment installer et utiliser Kind sur une machine locale sous Windows via le WSL2 Ubuntu.
Prérequis
Avant de commencer, vous aurez besoin de :
Installation de kubectl
Sur un système type Ubuntu
, exécutez les commandes suivantes pour installer kubectl
:
su - # Les droits root sont nécessaires, l'utilisation de sudo est possible
apt-get update -y && apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
chmod 644 /etc/apt/sources.list.d/kubernetes.list
apt-get update -y && apt-get install -y kubectl
exit # Quitter la session root
Installation de helm
Exécutez les lignes suivantes pour installer la ligne de commande helm
:
su - # Les droits root sont nécessaires, l'utilisation de sudo est possible
apt-get update -y && apt-get install -y curl gpg
curl https://baltocdn.com/helm/signing.asc \
| gpg --dearmor | tee /usr/share/keyrings/helm.gpg > /dev/null
apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/helm.gpg] \
https://baltocdn.com/helm/stable/debian/ all main" \
| tee /etc/apt/sources.list.d/helm-stable-debian.list
apt-get update -y && apt-get install -y helm
exit # Quitter la session root
Étape 1 : Installer Kind
Il existe plusieurs manières d'installer Kind. La manière la plus simple consiste à utiliser les versions binaires précompilées disponibles sur la page de téléchargement de Kind.
Pour télécharger et installer la dernière version de Kind, ouvrez une fenêtre de terminal et entrez les commandes suivantes :
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-amd64
chmod +x ./kind
su - # Les droits root sont nécessaires, l'utilisation de sudo est possible
mv ./kind /usr/local/bin/kind
exit # Quitter la session root
Remplacez v0.22.0
par le numéro de version souhaité.
A ce stade un simple appel à la commande kind version
devrait afficher la version de kind.
Étape 2 : Créer un cluster Kind
Nous allons maintenant définir un fichier kind-config.yaml
permettant de configurer le contenu du cluster (control plane, worker, etc.).
Voici un exemple de configuration qui nous permettra d'obtenir un control plane avec 2 noeuds et 5 workers.
cat <<EOT >> kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
disableDefaultCNI: true
kubeProxyMode: none
podSubnet: "10.10.0.0/16"
serviceSubnet: "10.11.0.0/16"
nodes:
- role: control-plane
image: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- role: control-plane
image: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- role: worker
image: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- role: worker
image: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- role: worker
image: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- role: worker
image: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- role: worker
image: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
EOT
Puis en exécutant les commandes suivantes, vous allez instancier le cluster défini au dessus.
# Création du cluster kind utilisant le fichier de configuration précédent
kind create cluster --name lab --config kind-config.yaml
Étape 3 : Accéder au cluster
Pour accéder au cluster, vous devrez utiliser l'outil de ligne de commande kubectl
. Si vous n'avez pas kubectl
installé sur votre machine, vous pouvez suivre les instructions de la documentation Kubernetes pour l'installer.
Une fois kubectl
installé, vous pouvez l'utiliser pour vous connecter au cluster Kind. Pour ce faire, vous devrez définir la variable d'environnement KUBECONFIG
pour qu'elle pointe sur le fichier de configuration du cluster.
Pour définir la variable d'environnement KUBECONFIG
, entrez la commande suivante :
Remplacez lab
par le nom de votre cluster si vous en avez plusieurs.
Avec la variable d'environnement KUBECONFIG
définie, vous pouvez maintenant utiliser kubectl
pour accéder au cluster.
Par exemple, pour afficher les nœuds du cluster, entrez la commande suivante :
Pour afficher les pods du cluster, entrez la commande suivante :
Étape 4 : Installation de Cilium
Pour installer Cilium, nous allons passer par le chart Helm officiel dont voici la configuration requise.
cat <<EOT >> cilium-values.yaml
kubeProxyReplacement: strict
k8sServiceHost: lab-control-plane
k8sServicePort: 6443
hostServices:
enabled: false
externalIPs:
enabled: true
nodePort:
enabled: true
hostPort:
enabled: true
image:
pullPolicy: IfNotPresent
ipam:
mode: kubernetes
hubble:
enabled: true
relay:
enabled: true
EOT
Ensuite, nous pouvons installer le chart avec ces commandes.
# Installation de Cilium
helm repo add cilium https://helm.cilium.io/
docker pull quay.io/cilium/cilium:v1.15.4
kind load --name lab docker-image quay.io/cilium/cilium:v1.15.4
helm upgrade --install --namespace kube-system cilium cilium/cilium --version 1.15.4 --values cilium-values.yaml
Après un peu d'attente, vous devriez obtenir un résultat similaire en exécutant un kubectl get nodes
:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
lab-control-plane Ready control-plane 9d v1.25.3
lab-worker Ready <none> 9d v1.25.3
lab-worker2 Ready <none> 9d v1.25.3
lab-worker3 Ready <none> 9d v1.25.3
lab-worker4 Ready <none> 9d v1.25.3
lab-worker5 Ready <none> 9d v1.25.3
Étape 5 : Stopper et supprimer le cluster
Pour arrêter le cluster, utilisez la commande kind delete cluster
. Par exemple :
Cela arrêtera tous les conteneurs et supprimera le cluster de votre machine.
Étape 6 : Activer l'autocomplétion
L'autocomplétion peut être activée de façon permanente en exécutant la commande suivante.
Cette commande ajoute au .bashrc
de l'utilisateur courant le script d'autocomplétion à sourcer.
Conclusion
Dans cet article, nous vous avons montré comment installer et utiliser Kind pour exécuter des clusters Kubernetes locaux sur votre machine. Avec Kind, vous pouvez facilement mettre en place et tester des environnements Kubernetes sans avoir besoin de matériel dédié ou de ressources cloud.