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
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
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
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
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
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
Si vous voulez me contacter, n'hesitez pas à m'envoyer un mail à contact@jbwattier.fr.