Installation de K3S
Configuration système des Raspberry Pi et déploiement de k3s sur le control plane et les workers
Nœuds du cluster
Le cluster est composé de quatre Raspberry Pi 4 (8 Go RAM, carte SD 32 Go), chacun avec un rôle fixe :
| Nœud | Rôle |
|---|---|
| cube01 | Worker |
| cube02 | Worker |
| cube03 | Worker |
| cube04 | Control plane |
Configuration réseau (optionnelle)
Par défaut, les nœuds sont identifiés via le DNS de la box. Si ce n’est pas le cas, on peut leur affecter une IP statique manuellement.
Sur chaque nœud, éditer /etc/network/interfaces :
auto eth0
iface eth0 inet static
address <IP-du-nœud>
netmask 255.255.255.0
gateway <IP-passerelle>
broadcast <IP-broadcast>
hostname <nom-du-nœud>
Puis éditer /etc/hosts pour que chaque nœud connaisse les autres :
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 <nom-du-nœud>
<IP-cube01> cube01 cube01.local
<IP-cube02> cube02 cube02.local
<IP-cube03> cube03 cube03.local
<IP-cube04> cube04 cube04.local
Préparation système
Ces étapes sont à réaliser sur chaque nœud.
Activation des cgroups
Ajouter à la fin de /boot/firmware/cmdline.txt (sur une seule ligne), puis redémarrer :
cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1
Hostname
sudo nano /etc/hostname
# Renseigner le nom du nœud : cube01, cube02, etc.
Accès SSH sans mot de passe
Copier la clé publique SSH du control plane (cube04) dans le fichier ~/.ssh/authorized_keys de chaque worker pour permettre les connexions sans mot de passe.
Installation d’iptables
sudo apt -y install iptables
Désactivation du swap (control plane uniquement)
Kubernetes exige que le swap soit désactivé :
sudo swapoff -a
sudo nano /etc/dphys-swapfile
# Mettre CONF_SWAPSIZE=0
Installation de K3S
Control plane (cube04)
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server" sh -s - \
--write-kubeconfig-mode 644 \
--node-taint CriticalAddonsOnly=true:NoExecute \
--bind-address <IP-cube04>
L’option --node-taint CriticalAddonsOnly=true:NoExecute empêche les pods applicatifs d’être schedulés sur le control plane.
Récupérer ensuite le token d’enregistrement des workers :
sudo cat /var/lib/rancher/k3s/server/node-token
Workers (cube01, cube02, cube03)
Sur chaque worker, installer l’agent k3s en pointant vers le control plane :
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent" \
K3S_URL=https://<IP-cube04>:6443 \
K3S_TOKEN="<K3S_TOKEN>" sh -
Post-installation
Labels des nœuds
Depuis le control plane, labelliser chaque worker pour que les workloads soient correctement ciblés :
kubectl label nodes cube01 kubernetes.io/role=worker node-type=worker
kubectl label nodes cube02 kubernetes.io/role=worker node-type=worker
kubectl label nodes cube03 kubernetes.io/role=worker node-type=worker
Variable KUBECONFIG
Ajouter dans /etc/environment sur le control plane pour que Helm et les autres outils trouvent la configuration :
KUBECONFIG=/etc/rancher/k3s/k3s.yaml
Installation de Helm
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
État initial du cluster
À ce stade, les quatre nœuds sont enregistrés et les pods système sont en cours d’exécution. La commande kubectl get nodes doit afficher les quatre nœuds avec le statut Ready.


