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 :

# Installer un noyau et ses en-têtes compatibles
sudo apt install linux-image-6.12.90+deb13-amd64 linux-headers-6.12.90+deb13-amd64
sudo apt update && sudo apt upgrade

# Recréer les liens symboliques attendus
cd /boot/
sudo ls -al
sudo rm ./initrddebian && sudo rm ./vmlinuzdebian
sudo ln -s ./initrd.img-6.12.90+deb13-amd64 ./initrddebian
sudo ln -s ./vmlinuz-6.12.90+deb13-amd64 ./vmlinuzdebian
sudo ls -al

# Recharger les modules et reconfigurer VirtualBox
sudo rmmod kvm_intel
sudo rmmod kvm
sudo /sbin/vboxconfig
Les numéros de version du noyau (6.12.90+deb13-amd64) sont donnés à titre d'exemple. Adaptez-les à ce qui est réellement disponible sur votre système (apt search linux-image).