Installation RKE2 Lab
TP : Cluster RKE2 sur VMs Vagrant
Ce TP vous guide de zéro jusqu'à un cluster Kubernetes (RKE2) à 2 nœuds : un master et un agent, tournant dans deux VMs Debian gérées par Vagrant/VirtualBox.
Déroulé :
- Installer Vagrant (sur votre poste)
- Installer VirtualBox (sur votre poste)
- Créer et démarrer les 2 VMs
- Installer RKE2 (master puis agent)
- Vérifier le cluster
Convention : les VMs Vagrant utilisent l'identifiantvagrant/ mot de passevagrant.
1. Installation de Vagrant
Choisissez le bloc correspondant à votre système. N'exécutez qu'un seul des deux.
Debian / Ubuntu
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vagrant
Alma / RHEL
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install vagrant
Vérifier :
vagrant --version
2. Installation de VirtualBox
(Exemple pour Debian « bookworm ». Adaptez le nom de la distribution si besoin.)
wget -O- -q https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --dearmour -o /usr/share/keyrings/oracle_vbox_2016.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle_vbox_2016.gpg] http://download.virtualbox.org/virtualbox/debian bookworm contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
sudo apt update
sudo apt install virtualbox-7.0
3. Création et démarrage des VMs
On crée deux VMs identiques, chacune dans son propre dossier, avec une IP différente sur le même réseau privé (192.168.56.0/24).
| VM | Dossier | IP privée | Rôle prévu |
|---|---|---|---|
| VM 1 | vm1 |
192.168.56.10 |
master |
| VM 2 | vm2 |
192.168.56.11 |
agent |
VM 1 (master)
mkdir vm1 && cd vm1
vagrant init debian/bookworm64
Éditez le Vagrantfile :
nano ./Vagrantfile
Dans le bloc de configuration, ajoutez le réseau privé et augmentez la mémoire :
config.vm.network "private_network", ip: "192.168.56.10"
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096 # 4 Go, ajustez selon votre poste
vb.cpus = 2
end
Démarrez la VM :
vagrant up
VM 2 (agent)
Même procédure, dans un autre dossier, avec l'IP .11 :
cd ..
mkdir vm2 && cd vm2
vagrant init debian/bookworm64
nano ./Vagrantfile
config.vm.network "private_network", ip: "192.168.56.11"
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 2
end
vagrant up
Commandes Vagrant utiles
Toutes ces commandes s'exécutent dans le dossier de la VM concernée :
vagrant ssh # se connecter à la VM
vagrant halt # arrêter la VM
vagrant destroy # détruire la VM (en cas d'erreur, pour repartir de zéro)
vagrant up # (re)démarrer la VM
4. Installation de RKE2
Connectez-vous à chaque VM avec vagrant ssh, puis passez en root (sudo -i) pour exécuter les commandes ci-dessous.
4.0 Prérequis (sur les DEUX machines)
sudo apt update
sudo apt install curl
4.1 Master
# Télécharger et installer RKE2 (rôle serveur)
curl -sfL https://get.rke2.io | sh -
systemctl enable rke2-server.service
# Définir le nom d'hôte
hostnamectl hostname bookwormmaster
# Préparer le fichier de configuration
mkdir -p /etc/rancher/rke2/
nano /etc/rancher/rke2/config.yaml
Contenu de config.yaml (master), remplacez <ip_du_noeud> par 192.168.56.10 :
node-ip: <ip_du_noeud>
node-external-ip: <ip_du_noeud>
cni: calico
Démarrer le service (= lance réellement l'installation du cluster) :
systemctl start rke2-server.service
Récupérer le token (nécessaire pour connecter l'agent, gardez-le de côté) :
cat /var/lib/rancher/rke2/server/node-token
Configurer kubectl sur le master :
mkdir -p ~/.kube/
sudo cp /etc/rancher/rke2/rke2.yaml ~/.kube/config
sudo chmod 644 ~/.kube/config
Le binairekubectlest installé par RKE2 dans/var/lib/rancher/rke2/bin/. Sikubectln'est pas trouvé, ajoutez ce dossier auPATH:export PATH=$PATH:/var/lib/rancher/rke2/bin
4.2 Agent
# Télécharger et installer RKE2 (rôle agent)
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sh -
systemctl enable rke2-agent.service
# Définir le nom d'hôte
hostnamectl hostname bookwormagent
# Préparer le fichier de configuration
mkdir -p /etc/rancher/rke2/
nano /etc/rancher/rke2/config.yaml
Contenu de config.yaml (agent), remplacez :
<ip_master>par192.168.56.10<token_donne_par_master>par le token récupéré à l'étape 4.1<ip_du_noeud>par192.168.56.11
server: https://<ip_master>:9345
token: <token_donne_par_master>
node-ip: <ip_du_noeud>
node-external-ip: <ip_du_noeud>
cni: calico
Démarrer le service :
systemctl start rke2-agent.service
5. Vérification du cluster
Depuis le master :
kubectl get nodes
Vous devez voir les deux nœuds (bookwormmaster et bookwormagent) passer à l'état Ready après une minute ou deux, le temps que le CNI (Calico) se déploie.
Annexe : dépannage : module noyau au démarrage de la VM
Si la VM refuse de démarrer avec une erreur de module noyau KVM/VirtualBox, appliquez le correctif suivant uniquement en cas d'erreur :
sudo tee /usr/local/sbin/fix-vbox-kernel >/dev/null <<'EOF'
#!/bin/bash
set -euo pipefail
RUNNING=$(uname -r)
apt-get update
apt-get install -y linux-image-amd64 linux-headers-amd64 "linux-headers-${RUNNING}" dkms build-essential
apt-get -y upgrade
LATEST=$(ls /boot/vmlinuz-* | sed 's|/boot/vmlinuz-||' | sort -V | tail -n1)
echo "Noyau en cours : $RUNNING | Dernier installé : $LATEST"
# Initramfs manquant -> on le génère
[ -f "/boot/initrd.img-$LATEST" ] || update-initramfs -c -k "$LATEST"
# Liens symboliques (atomique, pas besoin de rm)
ln -sfn "vmlinuz-$LATEST" /boot/vmlinuzdebian
ln -sfn "initrd.img-$LATEST" /boot/initrddebian
ls -l /boot/vmlinuzdebian /boot/initrddebian
# Libère VT-x pour VirtualBox
modprobe -r kvm_intel kvm_amd kvm 2>/dev/null || true
# Recompile les modules VirtualBox pour le noyau en cours
/sbin/vboxconfig
if [ "$RUNNING" != "$LATEST" ]; then
echo ">>> Tu tournes sur $RUNNING mais $LATEST est installé : redémarre puis relance ce script."
fi
EOF
sudo chmod +x /usr/local/sbin/fix-vbox-kernel
sudo fix-vbox-kernel