Jean-Baptiste WATTIER

SysAdmin ⸱ DevOps ⸱ Cloud

[root@k8s-master1:~]#  _
photo

Kubernetes


Étape 1 : Configuration Système sur Chaque Nœud

Sur le Master et les deux Workers, commencez par mettre à jour et désactiver le swap (requis par Kubernetes).

sudo apt update && sudo apt upgrade -y

Désactiver le swap :

sudo swapoff -a

Rendre cela permanent (en commentant la ligne du swap dans /etc/fstab) :

sudo sed -i '/swap/d' /etc/fstab

Charger les modules kernel requis par Kubernetes :

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
sudo modprobe br_netfilter

Paramètres sysctl nécessaires :

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

Étape 2 : Installer Containerd sur Chaque Nœud

Installer les paquets nécessaires :

sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

Ajouter le dépôt Docker (pour containerd) :

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Mettre à jour et installer containerd :

sudo apt update
sudo apt install -y containerd.io

Configurer containerd :

sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml

Dans /etc/containerd/config.toml, s’assurer que SystemdCgroup = true.

Redémarrer containerd :

sudo systemctl restart containerd
sudo systemctl enable containerd

Étape 3 : Installer kubeadm, kubelet et kubectl sur Chaque Nœud

Créer le répertoire pour les clés si nécessaire :

sudo mkdir -p /etc/apt/keyrings

Importer la clé GPG du dépôt Kubernetes stable (v1.30 ici) :

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/k8s.gpg

Ajouter le dépôt Kubernetes :

echo 'deb [signed-by=/etc/apt/keyrings/k8s.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/k8s.list

Mettre à jour et installer :

sudo apt update
sudo apt install -y kubelet kubeadm kubectl

Bloquer les mises à jour :

sudo apt-mark hold kubelet kubeadm kubectl

Étape 4 : Initialiser le Cluster sur le Nœud Master

Sur k8s-master (192.168.0.190) :

sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --control-plane-endpoint=192.168.0.190:6443

Après l'init, configurer kubectl pour l’utilisateur courant :

mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Étape 5 : Installer le Plugin Réseau Calico

Sur le k8s-master :

curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml -O
kubectl apply -f calico.yaml

Vérifier l’état des pods dans kube-system :

kubectl get pods -n kube-system

Étape 6 : Joindre les Workers au Cluster

Sur k8s-worker1 (192.168.0.191) et k8s-worker2 (192.168.0.192), utilisez la commande fournie par kubeadm init sur le master :

sudo kubeadm join 192.168.0.190:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>

Après quelques instants, sur le master, vérifiez que les nœuds sont en Ready :

kubectl get nodes

Contact

Si vous voulez me contacter, n'hesitez pas à m'envoyer un mail à contact@jbwattier.fr.