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
| Composant | Valeur |
|---|---|
| Runtime | containerd (inclus) |
| CNI | Canal (Flannel + Calico network policies) |
| Ingress controller | Aucun (contrairement à k3s, pas de Traefik) |
| DNS | CoreDNS |
| Base de données | etcd (embarqué) |
| Proxy | kube-proxy |
Prérequis
Ressources minimales
| Nœud | CPU | RAM |
|---|---|---|
| Server (control plane) | 2 vCPU | 4 GB |
| Agent (worker) | 2 vCPU | 2 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
| Port | Protocole | Rôle |
|---|---|---|
| 6443 | TCP | API server |
| 9345 | TCP | API RKE2 (join des agents) |
| 2379-2380 | TCP | etcd (servers uniquement) |
| 10250 | TCP | kubelet |
| 8472 | UDP | Canal/Flannel VXLAN |
| 51820-51821 | UDP | WireGuard (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.yamlné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
- Documentation : https://docs.rke2.io
- GitHub : https://github.com/rancher/rke2
- Releases : https://github.com/rancher/rke2/releases
- Matrice de support : https://www.suse.com/suse-rancher/support-matrix/
- Migration depuis RKE1 : https://docs.rke2.io/install/upgrade