Kubernetes rancher

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Plateforme de gestion multi-cluster Kubernetes
Éditeur SUSE (Rancher Labs, racheté en 2020, à vérifier l'organisation actuelle)
Distribution associée RKE2 (également K3s pour les environnements plus légers)
Voir aussi Kubernetes HA · Etcdctl · Kubernetes troubleshooting

Rancher est une plateforme de gestion centralisée pour plusieurs clusters Kubernetes : elle offre une interface unique (UI et API) pour provisionner, superviser et administrer des clusters hétérogènes — clusters déployés avec ses propres distributions (RKE2, K3s), clusters managés d'un fournisseur cloud (EKS, AKS, GKE) importés dans Rancher, ou clusters existants rattachés après coup. Le projet a été créé par Rancher Labs puis racheté par SUSE en 2020 ; l'offre est aujourd'hui commercialisée sous la marque SUSE Rancher (positionnement précis à vérifier selon l'évolution de l'organisation).

RKE2 (Rancher Kubernetes Engine 2) est la distribution Kubernetes durcie que Rancher déploie le plus couramment sur des nœuds Linux classiques ; elle tourne comme service systemd (rke2-server sur les nœuds control plane, rke2-agent sur les workers) et embarque containerd, un CNI et etcd déjà intégrés, dans une configuration orientée sécurité et conformité (CIS Benchmark).

Dépannage courant : expiration de certificats

Comme tout cluster Kubernetes, RKE2 s'appuie sur des certificats X.509 internes (API server, kubelet, etcd...) à durée de vie limitée. Une expiration se manifeste typiquement par un message du type you must be logged into the server (Unauthorized) alors même que le cluster tourne normalement.

Diagnostiquer

# Contexte kubeconfig utilisé
kubectl config view
kubectl config current-context

# Connectivité vers l'API server
kubectl cluster-info
curl -k https://<ip-du-master>:6443/healthz

# Certificate Signing Requests en attente
kubectl get csr

# Date d'expiration du certificat client embarqué dans le kubeconfig
kubectl config view --raw -o jsonpath='{.users[0].user.client-certificate-data}' | base64 -d | openssl x509 -noout -dates

# Date d'expiration de l'ensemble des certificats RKE2, sur le nœud master
for cert in /var/lib/rancher/rke2/server/tls/*.crt; do
  echo "=== $cert ==="
  openssl x509 -noout -dates -in "$cert" 2>/dev/null
done

Renouveler

RKE2 régénère automatiquement ses certificats arrivés à expiration au redémarrage du service — la procédure consiste donc essentiellement à redémarrer rke2-server sur chaque nœud control plane :

sudo systemctl stop rke2-server
sleep 10
sudo systemctl start rke2-server
sudo journalctl -u rke2-server -f   # suivre le redémarrage et la régénération

# Vérifier les nouvelles dates de validité
for cert in /var/lib/rancher/rke2/server/tls/*.crt; do
  echo "=== $cert ==="
  openssl x509 -noout -dates -in "$cert" 2>/dev/null
done

Le kubeconfig généré par RKE2 (/etc/rancher/rke2/rke2.yaml) contient lui aussi les nouveaux certificats ; il doit être recopié vers le poste d'administration et son adresse locale corrigée pour pointer vers l'IP réelle du master plutôt que vers 127.0.0.1 :

sudo scp root@<ip-du-master>:/etc/rancher/rke2/rke2.yaml ~/.kube/config
sed -i 's/127.0.0.1/<ip-du-master>/g' ~/.kube/config
chmod 600 ~/.kube/config

kubectl get nodes
kubectl get pods -A

Cas d'un cluster HA (multi-master)

Sur un control plane à plusieurs nœuds (voir Kubernetes HA), les redémarrages doivent être séquentiels : redémarrer rke2-server sur un master, attendre qu'il repasse Ready, puis seulement passer au suivant.

sudo systemctl restart rke2-server   # sur master-1
watch kubectl get nodes              # attendre Ready avant master-2, etc.

Ne jamais redémarrer tous les masters simultanément : chaque nœud héberge une instance etcd (topologie empilée par défaut sous RKE2), et un redémarrage groupé fait perdre le quorum du cluster — voir Etcdctl pour la restauration à partir d'un snapshot si la situation en arrive là.

Voir aussi

  • Kubernetes HA — topologies etcd et raisons de ne jamais redémarrer tous les masters à la fois
  • Etcdctl — sauvegarde/restauration en cas de perte de quorum
  • Kubernetes troubleshooting — méthodologie de diagnostic plus générale