Comment déployer votre Cluster Kubernetes en local avec Kind sur Linux Ubuntu ?

Kind est un outil pour exécuter des clusters Kubernetes. Kind a été principalement conçu pour tester Kubernetes lui-même, mais peut être aussi utilisé pour le développement local ou CI (Intégration continue).
Kind exécute un cluster local en utilisant des conteneurs Docker comme "nœuds".
Cette configuration sera basée sur Ubuntu 22.04 . Nous allons d'abord créer un cluster Kubernetes localement, puis explorer les composants de base présents dans le cluster, nous allons ensuite créer un pod nginx à l'intérieur du cluster à l'aide d'un fichier YAML.
Prérequis
Pour créer ce cluster Kubernetes, vous aurez besoin d'installer :
Ubuntu
Docker
Kind
Kubectl
Installations
Récupération de la listes des mis à jour disponibles
sudo apt update -y
Installation de Docker
sudo apt update docker.io
Installation de Kind
sudo curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.14.0/kind-linux-amd64
sudo chmod +x ./kind
sudo mv ./kind /usr/bin/kind
Installation de Kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
Création d'un cluster single-node
Maintenant, tout est installé vous pouez créer un cluster de kubernetes. Exécuter seulement la commande “kind create cluster” et cela vous créera un cluster Kubernetes. Cependant il sera créé avec les paramètres par défaut. Ces paramètres par défaut sont :
Le nom du cluster sera ‘kind’
Le cluster n'aura qu'un seul nœud (control panel node)
Si vous souhaitez créer un cluster avec plusieurs nœuds dès maintenant alors rendez-vous dans la section suivant Création d'un cluster multi-nodes.
Pour personnalisez le nom du cluster vous pouvez rajouter --name suivi du nom
sudo kind create cluster

Une fois votre cluster déployé localement, vous pouvez énumérer le nombre de pods présents dans ce cluster à l'aide de la commande :
sudo kubectl get pods

Aucune ressource n'est trouvée dans l'espace de noms par défaut car nous n'avons aucun pod programmé dans l'espace de noms par défaut, permet d'essayer de répertorier tous les pods présents dans tous les espaces de noms de ce cluster à l'aide de la commande mentionnée ci-dessous:
sudo kubectl get pods -A

Actuellement, nous n'avons aucun pod exécuté dans l'espace de noms par défaut du cluster, mais plusieurs conteneurs s'exécutent à l'intérieur de l'espace de noms du système kubernetes.
Vous pouvez créer un pod du service web nginx dans le cluster avec ce fichier YAML:
nano ./nginx-web.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: static-web
image: nginx
Création du pod nginx dans le cluster avec la commande kubectl
sudo kubectl create -f ./nginx-web.yaml

Vérification des pods présent dans le cluster
sudo kubectl get pods
Vérification des noeuds présent dans le cluster
sudo kubectl get nodes -o wide
Création d'un cluster multi-nodes
Voyons maintenant comment vous pouvez faire un cluster avec 1 "master nod" 2 "workers nod" personnalisé avec un fichier de config :
nano kind-config.yaml
# three node (two workers) cluster config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
Création du cluster
kind create cluster --name exemple --config kind-config.yaml
Maintenant, le cluster est prêt et vous pouvez utiliser les commandes kubectl pour travailler sur le cluster. Vous pouvez exécuter des commandes kubectl à partir de votre machine locale.
Modifiez le nombre de nœuds dans le cluster.
Vous pouvez avoir des "control-plane nodes" et des "wokers nodes autant que vous le souhaitez. Voici un exemple de configuration avec 3 control-plane et 3 workers.
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: control-plane
- role: control-plane
- role: worker
- role: worker
- role: worker
Suppression d'un cluster
Vous pouvez supprimer directement avec la commande kind delete suivi du nom du cluster :
kind delete cluster
Nous pouvons constater que Kind permet de créer des noeuds en local sur un unique hôte et il sera donc nécessaire d'utiliser d'autres technologies comme kubeadm ou minikube pour de la mise en production ou simplement pour déployer un cluster entre plusieurs hôtes.