Orchestration

RKE2

Distribution Kubernetes de Rancher/SUSE orientée sécurité (FIPS 140-2, CIS benchmarks). Containerd, binaire unique, recommandée pour tous les nouveaux déploiements Rancher.

RKE2 (Rancher Kubernetes Engine 2) est la distribution Kubernetes de production développée par Rancher (SUSE). Elle succède à RKE1 avec une architecture modernisée : containerd à la place de Docker, conformité FIPS 140-2, alignement sur les CIS benchmarks Kubernetes, et un binaire unique sans dépendance externe. C'est la distribution recommandée pour tous les nouveaux clusters Rancher.

Idéal pour : clusters Kubernetes on-premises enterprise, environnements nécessitant FIPS ou conformité CIS, gestion multi-cluster via Rancher.


Informations essentielles

Origine : Rancher / SUSE (États-Unis)  ·  Licence : Apache 2.0  ·  Architectures : x86_64, ARM64

Liens : Documentation  ·  GitHub  ·  Releases

Support : RKE2 maintient les 3 dernières versions mineures de Kubernetes. Consulter la matrice de support Rancher pour les combinaisons RKE2 / Rancher supportées.

Stack par défaut

ComposantValeur
Runtimecontainerd (inclus)
CNICanal (Flannel + Calico network policies)
Ingress controllerAucun (contrairement à k3s, pas de Traefik)
DNSCoreDNS
Base de donnéesetcd (embarqué)
Proxykube-proxy

Prérequis

Ressources minimales

NœudCPURAM
Server (control plane)2 vCPU4 GB
Agent (worker)2 vCPU2 GB

Système d'exploitation

  • Ubuntu 20.04 / 22.04 / 24.04
  • RHEL 8 / 9, Rocky Linux 8 / 9, AlmaLinux 8 / 9
  • SUSE Linux Enterprise 15

Ports à ouvrir

PortProtocoleRôle
6443TCPAPI server
9345TCPAPI RKE2 (join des agents)
2379-2380TCPetcd (servers uniquement)
10250TCPkubelet
8472UDPCanal/Flannel VXLAN
51820-51821UDPWireGuard (si activé)

Installation

Server (control plane)

curl -sfL https://get.rke2.io | sudo sh -

sudo systemctl enable rke2-server.service
sudo systemctl start rke2-server.service

# Suivre les logs de démarrage
sudo journalctl -u rke2-server -f

Récupérer le kubeconfig

mkdir -p ~/.kube
sudo cp /etc/rancher/rke2/rke2.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config

# kubectl est fourni par RKE2
export PATH=$PATH:/var/lib/rancher/rke2/bin
kubectl get nodes

Récupérer le token pour les agents

sudo cat /var/lib/rancher/rke2/server/node-token

Agent (worker)

# Créer le fichier de configuration
sudo mkdir -p /etc/rancher/rke2
sudo tee /etc/rancher/rke2/config.yaml <<EOF
server: https://<IP_SERVER>:9345
token: <TOKEN>
EOF

# Installer et démarrer en mode agent
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sudo sh -
sudo systemctl enable rke2-agent.service
sudo systemctl start rke2-agent.service

Configuration (config.yaml)

RKE2 se configure via /etc/rancher/rke2/config.yaml.

# /etc/rancher/rke2/config.yaml - exemple server HA
server: https://lb.moncluster.com:9345    # pour les servers supplémentaires
token: <token-cluster>

tls-san:
  - lb.moncluster.com
  - 192.168.1.100

cni:
  - canal                                  # ou cilium, calico, flannel

cluster-cidr: 10.42.0.0/16
service-cidr: 10.43.0.0/16

disable:
  - rke2-ingress-nginx                     # désactiver si ingress géré ailleurs

etcd-snapshot-schedule-cron: "0 */6 * * *"
etcd-snapshot-retention: 5

Tout changement de config.yaml nécessite un redémarrage du service.


Haute disponibilité (HA)

Prérequis : un load balancer TCP sur le port 9345 (join) et 6443 (API).

# Premier server
sudo tee /etc/rancher/rke2/config.yaml <<EOF
tls-san:
  - lb.moncluster.com
  - 192.168.1.100
EOF

curl -sfL https://get.rke2.io | sudo sh -
sudo systemctl enable --now rke2-server

# Récupérer le token
sudo cat /var/lib/rancher/rke2/server/node-token

# Servers supplémentaires (identique aux agents mais en mode server)
sudo tee /etc/rancher/rke2/config.yaml <<EOF
server: https://lb.moncluster.com:9345
token: <token>
tls-san:
  - lb.moncluster.com
EOF

curl -sfL https://get.rke2.io | sudo sh -
sudo systemctl enable --now rke2-server

Utiliser un nombre impair de servers (3 ou 5) pour le quorum etcd.


Sauvegarde etcd

RKE2 intègre la sauvegarde automatique d'etcd.

# Snapshot manuel
rke2 etcd-snapshot save --name backup-$(date +%Y%m%d)

# Lister les snapshots
rke2 etcd-snapshot list

# Restaurer
sudo systemctl stop rke2-server
rke2 etcd-snapshot restore --name <nom-snapshot>
sudo systemctl start rke2-server

Mise à jour

# Sur chaque server (un par un)
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=v1.32.0+rke2r1 sudo sh -
sudo systemctl restart rke2-server

# Sur chaque agent
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" INSTALL_RKE2_VERSION=v1.32.0+rke2r1 sudo sh -
sudo systemctl restart rke2-agent

Mettre à jour les servers en premier, puis les agents. Ne jamais sauter de version mineure.


Troubleshooting

Logs

sudo journalctl -u rke2-server -f
sudo journalctl -u rke2-agent -f

kubectl intégré à RKE2

# Si kubectl n'est pas dans le PATH
/var/lib/rancher/rke2/bin/kubectl --kubeconfig /etc/rancher/rke2/rke2.yaml get nodes

Agent ne rejoint pas le cluster

# Vérifier la connectivité vers le server
curl -k https://<IP_SERVER>:9345/ping

# Vérifier le token
sudo cat /etc/rancher/rke2/config.yaml

Nœud NotReady

kubectl describe node <nom>
sudo journalctl -u rke2-agent -n 100

Reset complet d'un nœud

sudo rke2-uninstall.sh

Commandes utiles

# kubectl fourni par RKE2
export PATH=$PATH:/var/lib/rancher/rke2/bin
export KUBECONFIG=/etc/rancher/rke2/rke2.yaml

# État du cluster
kubectl get nodes -o wide
kubectl get pods -A

# Token de jointure
sudo cat /var/lib/rancher/rke2/server/node-token

# Snapshots etcd
rke2 etcd-snapshot list
rke2 etcd-snapshot save --name <nom>

# Version
rke2 --version

# Crictl (inspecter containerd)
/var/lib/rancher/rke2/bin/crictl ps

Ressources

Newsletter · 2 000+ abonnés

Reste au courant de ce qui bouge en prod

RudeOps veille devops hebdo, droit au but.

Gratuit · Sans spam · Désinscription en un clic