1. Mise à jour du système et installation des outils de base
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg2 apt-transport-https ca-certificates software-properties-common
2. Installation de containerd
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd
sudo systemctl status containerd
L'option
SystemdCgroup = trueest obligatoire pour que containerd s'intègre correctement avec kubelet via systemd.
3. Désactivation du swap
Le swap doit être désactivé — Kubernetes ne fonctionne pas correctement avec le swap actif.
sudo swapoff -a
sudo sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab
La commande
sedcommente la ligne swap dans/etc/fstabpour que la désactivation soit persistante après redémarrage.
4. Configuration des modules du noyau et paramètres réseau
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
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
sudo sysctl --system
| Paramètre | Rôle |
|---|---|
overlay |
Système de fichiers en couches pour les conteneurs |
br_netfilter |
Permet au bridge réseau de passer par iptables |
ip_forward |
Active le routage IP entre les interfaces |
5. Ajouter le dépôt Kubernetes et la clé GPG
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key |
sudo gpg --dearmor -o /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.32/deb/ /" |
sudo tee /etc/apt/sources.list.d/kubernetes.list
6. Installer kubelet, kubeadm et kubectl
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
apt-mark holdempêche une mise à jour automatique des composants Kubernetes, ce qui pourrait casser le cluster.
7. Initialiser le cluster Kubernetes
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Le CIDR
10.244.0.0/16est recommandé pour le plugin réseau Flannel.
À la fin de l'initialisation, kubeadm affiche une commande kubeadm join à conserver pour ajouter des nœuds workers.
8. Configurer kubectl pour l'utilisateur courant
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
9. Installer le plugin réseau Flannel
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
10. Vérifier l'état du nœud Master
kubectl get nodes
Résultat attendu :
NAME STATUS ROLES AGE VERSION
master Ready control-plane 5m v1.32.0
11. Dépannage — Flannel / CNI
Si les pods Flannel restent en CrashLoopBackOff ou que le nœud reste en NotReady, c'est souvent lié à un chemin CNI manquant. Créer le lien symbolique suivant :
sudo ln -s /opt/cni/bin /usr/lib/cni
Puis redémarrer les pods Flannel :
kubectl rollout restart daemonset/kube-flannel-ds -n kube-flannel
kubectl get pods -n kube-flannel
Récapitulatif — Ordre d'installation
| Étape | Action |
|---|---|
| 1 | Mettre à jour le système et installer les dépendances |
| 2 | Installer et configurer containerd (SystemdCgroup = true) |
| 3 | Désactiver le swap (temporaire + persistant via fstab) |
| 4 | Charger les modules noyau et paramètres réseau |
| 5 | Ajouter le dépôt Kubernetes v1.32 |
| 6 | Installer kubelet, kubeadm, kubectl (avec hold) |
| 7 | Initialiser le cluster (kubeadm init) |
| 8 | Configurer kubectl pour l'utilisateur |
| 9 | Installer Flannel |
| 10 | Vérifier kubectl get nodes → STATUS Ready |
| 11 | Si Flannel KO : sudo ln -s /opt/cni/bin /usr/lib/cni |
