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é :

  1. Installer Vagrant (sur votre poste)
  2. Installer VirtualBox (sur votre poste)
  3. Créer et démarrer les 2 VMs
  4. Installer RKE2 (master puis agent)
  5. Vérifier le cluster
Convention : les VMs Vagrant utilisent l'identifiant vagrant / mot de passe vagrant.

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 binaire kubectl est installé par RKE2 dans /var/lib/rancher/rke2/bin/. Si kubectl n'est pas trouvé, ajoutez ce dossier au PATH : 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> par 192.168.56.10
  • <token_donne_par_master> par le token récupéré à l'étape 4.1
  • <ip_du_noeud> par 192.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