Orchestration

RKE

Rancher Kubernetes Engine v1 - outil CLI pour déployer des clusters Kubernetes on-premises via Docker. En maintenance active, migration vers RKE2 recommandée pour les nouveaux projets.

RKE (Rancher Kubernetes Engine) est un outil CLI développé par Rancher (SUSE) pour installer et gérer des clusters Kubernetes on-premises. Il configure les nœuds via SSH et utilise Docker comme runtime de conteneurs. RKE v1 est aujourd'hui en maintenance active : il reçoit les correctifs de sécurité mais plus de nouvelles fonctionnalités. Les nouveaux déploiements doivent utiliser RKE2.

Idéal pour : maintenir des clusters RKE1 existants, environnements Rancher legacy, migrations progressives vers RKE2.


Informations essentielles

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

Liens : Documentation  ·  GitHub  ·  Releases

Support : RKE1 est en maintenance active - correctifs de sécurité uniquement. Migration vers RKE2 recommandée. Consulter la matrice de support Rancher.

Stack par défaut

ComposantValeur
RuntimeDocker (requis sur chaque nœud)
CNICanal (Flannel + Calico network policies)
Ingress controllernginx-ingress
DNSCoreDNS
MonitoringOptionnel via Rancher

Docker est requis sur tous les nœuds. Depuis Kubernetes 1.24, le dockershim a été retiré de l'upstream - RKE intègre son propre shim.


Prérequis

Sur chaque nœud

  • Linux 64-bit (Ubuntu 20.04/22.04, RHEL 7/8, CentOS 7/8)
  • Docker installé et actif
  • Accès SSH depuis la machine exécutant RKE
  • Utilisateur avec droits sudo ou root

Ports à ouvrir

PortProtocoleRôle
6443TCPAPI server
2379-2380TCPetcd
10250TCPkubelet
10254TCPingress-nginx health
8472UDPCanal/Flannel VXLAN

Installer Docker sur les nœuds

# Ubuntu
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
sudo systemctl enable --now docker

Installation de RKE

# Télécharger le binaire RKE
curl -LO https://github.com/rancher/rke/releases/latest/download/rke_linux-amd64
chmod +x rke_linux-amd64
sudo mv rke_linux-amd64 /usr/local/bin/rke

rke --version

Déployer un cluster

1. Générer le fichier de configuration

rke config --name cluster.yml
# Répond aux questions interactives (IPs, rôles, SSH key…)

2. Fichier cluster.yml (exemple)

# cluster.yml
nodes:
  - address: 192.168.1.10
    user: ubuntu
    role:
      - controlplane
      - etcd
    ssh_key_path: ~/.ssh/id_rsa
  - address: 192.168.1.11
    user: ubuntu
    role:
      - worker
    ssh_key_path: ~/.ssh/id_rsa
  - address: 192.168.1.12
    user: ubuntu
    role:
      - worker
    ssh_key_path: ~/.ssh/id_rsa

kubernetes_version: v1.27.16-rancher1-1

network:
  plugin: canal

services:
  etcd:
    backup_config:
      enabled: true
      interval_hours: 12
      retention: 6

3. Déployer

rke up --config cluster.yml

RKE génère kube_config_cluster.yml - le kubeconfig du cluster.

export KUBECONFIG=$(pwd)/kube_config_cluster.yml
kubectl get nodes

Sauvegarde et restauration etcd

# Snapshot manuel
rke etcd snapshot-save --config cluster.yml --name backup-$(date +%Y%m%d)

# Lister les snapshots
rke etcd snapshot-list --config cluster.yml

# Restaurer depuis un snapshot
rke etcd snapshot-restore --config cluster.yml --name backup-20240115

Mise à jour

# 1. Mettre à jour la version dans cluster.yml
#    kubernetes_version: v1.28.x-rancher1-x

# 2. Appliquer
rke up --config cluster.yml

# 3. Vérifier
kubectl get nodes

Ne jamais sauter de version mineure. Consulter les notes de release RKE pour la compatibilité.


Troubleshooting

Connexion SSH échouée

# Tester la connexion SSH manuellement
ssh -i ~/.ssh/id_rsa ubuntu@<ip-nœud>

# Vérifier les droits Docker sur le nœud
docker ps

Nœud NotReady

kubectl describe node <nom>
# Sur le nœud : vérifier Docker
sudo systemctl status docker
sudo journalctl -u docker -n 50

Logs des composants

# API server (tourne dans Docker sur le control plane)
docker logs kube-apiserver
docker logs etcd
docker logs kube-controller-manager

Recréer un nœud

# Retirer le nœud du cluster.yml, puis :
rke up --config cluster.yml

Commandes utiles

# Déployer / mettre à jour le cluster
rke up --config cluster.yml

# Vérifier l'état du cluster
rke up --check

# Retirer un cluster
rke remove --config cluster.yml

# Snapshot etcd
rke etcd snapshot-save --config cluster.yml --name <nom>

# Certificats
rke cert rotate --config cluster.yml

# Version
rke --version

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