Sommaire
- Présentation
- 1) Prérequis
- 2) Installation des dépendances
- 3) Configurations
- 4) Installation du Container Runtime (Containerd)
- 5) Installation de Kubernetes 1.32
- 6) Initialisation du cluster Kubernetes (Uniquement sur le Master)
- 7) Installation d’un plugin réseau (CNI) pour Kubernetes (Uniquement sur le Master)
- 8) Ajout d’un nœud dans le cluster Kubernetes
Présentation

Dans ce tutoriel, nous allons installer et configurer un cluster Kubernetes pour gérer des applications conteneurisées.
Nous installerons Kubernetes à l’aide de kubeadm et nous utiliserons containerd comme Container Runtime.
Ce tutoriel est prévu pour Debian 12 et Ubuntu Server 24.04.
Dans ce tutoriel, Kubernetes sera installé sur un serveur virtuel Proxmox VE (PVE) mais il est également possible de l’installer sur un Serveur Privé Virtuel (VPS).
1) Prérequis
- Le paquet sudo doit être installé
- Au moins 2 machines virtuelles
- 1 Master
- 1 Worker
2) Installation des dépendances
2.1) Mettre à jour des paquets
1 |
sudo apt update -y && sudo apt upgrade -y |
2.2) Installer les dépendances
1 |
sudo apt install -y curl apt-transport-https ca-certificates software-properties-common |
3) Configurations
3.1) Désactiver le swap
1 2 |
sudo swapoff -a sudo sed -i '/ swap / s/^/#/' /etc/fstab |
3.2) Charger les modules du noyau
3.2.1) Immédiatement
1 2 |
sudo modprobe overlay sudo modprobe br_netfilter |
3.2.2) Au démarrage du système
1 2 3 4 |
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF |
3.3) Configurer le noyau
3.3.1) Configurations réseaux
1 2 3 4 5 |
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF |
3.3.2) Charger la nouvelle configuration
1 |
sudo sysctl --system |
4) Installation du Container Runtime (Containerd)
Kubernetes a besoin d’un moteur de containers (Container Runtime) pour manager les containers.
Nous allons donc installer Containerd pour que Kubernetes puisse gérer les conteneurs.
4.1) Installer containerd
1 2 |
sudo apt update -y sudo apt install -y containerd |
4.2) Configurer containerd
1 2 |
sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml |
4.3) Activer le driver cgroup de systemd
1 |
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml |
4.4) Redémarrer et activer containerd au démarrage du système
1 2 |
sudo systemctl restart containerd sudo systemctl enable containerd |
5) Installation de Kubernetes 1.32
5.1) Enregistrer la clé du dépôt Kubernetes
1 2 3 |
K8S_VERSION="1.32" sudo mkdir -p -m 755 /etc/apt/keyrings curl -fsSL https://pkgs.k8s.io/core:/stable:/v${K8S_VERSION}/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg |
Remarque : Modifiez la version en conséquence.
5.2) Ajouter le dépôt Kubernetes
1 2 |
K8S_VERSION="1.32" echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v${K8S_VERSION}/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list |
Remarque : Modifiez la version en conséquence.
5.3) Installer Kubernetes
1 2 3 |
sudo apt update -y sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl |
5.4) Activer l’autocomplétion pour Kubernetes
1 2 3 4 5 6 7 8 9 10 |
# Pour l'utilisateur en cours uniquement echo "source <(kubectl completion bash)" >> ~/.bashrc source ~/.bashrc # Pour tous les utilisateurs #kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null #source /etc/bash_completion # Pour un utilisateur spécifique uniquement # echo "source <(kubectl completion bash)" >> /home/user/.bashrc |
5.5) Démarrer et activer le service kubelet
1 2 |
sudo systemctl start kubelet sudo systemctl enable kubelet |
6) Initialisation du cluster Kubernetes (Uniquement sur le Master)
Important : Cette action n’est à faire qu’une seule fois dans la cluster.
Nous allons maintenant Initialiser le cluster Kubernetes.
6.1) Initialiser le cluster Kubernetes
1 2 |
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 \ --apiserver-advertise-address=192.168.1.130 |
--pod-network-cidr
: Spécifier une plage d’adresses pour le réseau des pods.--apiserver-advertise-address
: Spécifier l’adresse IP d’écoute de l’API Kubernetes.
6.2) Copier la configuration dans le répertoire de l’utilisateur courant
1 2 3 |
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config |
6.3) Indiquer à Kubernetes où trouver sa configuration
1 2 |
echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc source ~/.bashrc |
6.4) Vérification
6.4.1) Lister les nodes
1 |
kubectl get nodes -o wide |

6.4.2) Lister les pods
1 |
kubectl get pods -A -o wide |

Les pods coredns sont en statut pending en attendant l’installation d’un plugin réseau.
7) Installation d’un plugin réseau (CNI) pour Kubernetes (Uniquement sur le Master)
Important : Cette action n’est à faire que sur le master.
Nous utiliserons Calico comme CNI (Container Network Interface).
7.1) Installer de Calico
1 |
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml |
7.2) Vérification
1 |
kubectl get pods -n kube-system -o wide |

De nouveaux pods calico sont apparus et les pods coredns sont maintenant à l’état Running.
8) Ajout d’un nœud dans le cluster Kubernetes
8.1) Récupération du token sur un des masters
1 |
sudo kubeadm token create --print-join-command |
Important : Cette action est à effectuer sur le master.
Cette commande génère la commande kubeadm permettant de joindre un nœud au cluster.
8.2) Joindre un nouveau node au cluster Kubernetes
1 2 3 |
sudo kubeadm join 192.168.1.130:6443 \ --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:abcdefgh123456789 |
Remarque : Ne pas oublier sudo
.

8.3) Tester le bon fonctionnement
8.3.1) Lister les nodes
1 |
kubectl get nodes -o wide |

8.3.2) Créer un pod
1 |
kubectl run my-pod --image=nginx --port=80 |
8.3.3) Vérifier la présence du pod
1 |
kubectl get pods -o wide |

8.3.4) Supprimer le pod
1 |
kubectl delete pod my-pod |
Voilà ! C’est terminé !
Vous pouvez maintenant orchestrer vos containers grâce à Kubernetes.
Il ne reste plus qu’à :
- Joindre de nouveaux nodes
- Créer vos pods
- Faire un don pour soutenir notre travail.
En savoir plus sur Jj World
Subscribe to get the latest posts sent to your email.
Laisser un commentaire