1.kubernetes_installation.md
- /kubernetes_installation.md - /1.kubernetes_installation.md - /2.worker_node_configuration.md
- Installation et Configuration d'un Cluster Kubernetes sous Debian 12
- Prérequis
- 1. Configuration
- 2. Installation de Docker
- 3. Désactivation du Swap
- 4. Configuration Système pour Kubernetes
- 5. Installation de Containerd
- 6. passer sur iptables legacy
- 6. Installation de Kubernetes (Kubeadm, Kubelet, Kubectl)
- 7. Initialisation du Cluster Kubernetes
- 9. Installation du réseau des Pods
- 9. Ajout des Workers
Installation et Configuration d'un Cluster Kubernetes sous Debian 12
Prérequis
Toutes les commandes dans prerequis sont a fqire sur tous les noeuds
1. Configuration
- OS : Debian 12
- Réseau : 192.168.10.0/24
- Infrastructure : 3 VMs (1 Master, 2 Workers)
Nom | Rôle | Adresse IP |
---|---|---|
kube01 | Master | 192.168.10.10 |
worker1 | Worker | 192.168.10.11 |
worker2 | Worker | 192.168.10.12 |
- Configuration de /etc/hosts sur chaque machine :
exemple pour kube01
127.0.0.1 localhost 127.0.1.1 kube01 192.168.10.11 worker1 192.168.10.10 kube01 192.168.10.12 worker2
Cela va permettre aux machines de communiquer entre elles dans le cluster.
2. Installation de Docker
Sur chaque machine, exécutez :
curl https://get.docker.com | bash
3. Désactivation du Swap
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
Vérification :
free -h
verifier si la colonne echange est bien a 0.
4. Configuration Système pour Kubernetes
Sur toutes les machines, exécutez :
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
echo -e overlay\\nbr_netfilter > /etc/modules-load.d/k8s.conf
cat <<EOF | tee /etc/sysctl.d/99-kubernetes-k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl --system
Cela va permettre de charger les modules necessaires au fonctionnement de kubernetes
5. Installation de Containerd
apt -y install containerd iptables apt-transport-https gnupg2 curl sudo
containerd config default | tee /etc/containerd/config.toml >/dev/null 2>&1
nano /etc/containerd/config.toml
Il faut par la suite modifier le fichier a la ligne 61 :
sandbox_image = "registry.k8s.io/pause:3.9"
et ligne 125 :
SystemdCgroup = true
Puis redemarrer le service :
systemctl restart containerd.service
6. passer sur iptables legacy
- Il faut passer sur la regle iptables-legacy :
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/sbin/iptables-nft 20 auto mode
1 /usr/sbin/iptables-legacy 10 manual mode
2 /usr/sbin/iptables-nft 20 manual mode
6. Installation de Kubernetes (Kubeadm, Kubelet, Kubectl)
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] http://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list
apt update
apt -y install kubeadm kubelet kubectl
ln -s /opt/cni/bin /usr/lib/cni
7. Initialisation du Cluster Kubernetes
Sur le master (kube01) UNIQUEMENT :
kubeadm init --control-plane-endpoint=192.168.10.10 --pod-network-cidr=10.244.0.0/16
Post-initialisation :
- Apres l'initiation du master, nous avons ce message qu'il faut conserver :
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.10.10:6443 --token 9yu8eq.hluhrzkufar4s07z \
--discovery-token-ca-cert-hash sha256:21820cff2482dda0ce25e234f5fc2e6a5d2676bd14ca08cf1c457eba2a3583b2
Sur le master (kube01) UNIQUEMENT : Mise en place des droits du cluster pour l'admin :
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
9. Installation du réseau des Pods
Sur le master (kube01) UNIQUEMENT : Ces pods reseaux vont permettre aux containers de communiquer entre eux. Nous allons utiliser flannel : Flannel attend une ip 10.244.0.0/16.
kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
9. Ajout des Workers
Sur chaque worker :
kubeadm join 192.168.10.10:6443 --token <TOKEN> \
--discovery-token-ca-cert-hash sha256:<HASH>
Vérification :
kubectl get nodes
et verifier si les pods sont bien lancees :
root@kube01:~# kubectl get pods -n kube-flannel
NAME READY STATUS RESTARTS AGE
kube-flannel-ds-7x8dk 1/1 Running 11 (127m ago) 6d
kube-flannel-ds-jwgkv 1/1 Running 7 (136m ago) 6d
kube-flannel-ds-vfr4h 1/1 Running 10 (74m ago) 6d
root@kube01:~#