Aller au contenu
English
English
Conteneurs & Orchestration medium

Maintenance et changements sur un cluster Kubernetes

20 min de lecture

Toute opération de maintenance sur Kubernetes est une disruption volontaire. La différence entre une maintenance réussie et un incident en production, c'est la méthode : cordon, drain, intervention, uncordon, dans cet ordre, avec les bons garde-fous.

Les PodDisruptionBudget sont le filet de sécurité : ils garantissent que vos interventions respectent les contraintes de disponibilité des applications, y compris lors d'une mise à jour d'urgence, moment où personne ne relit les manifestes.

  1. Vérifier l'état initial, kubectl get nodes et kubectl get pods -A pour confirmer que le cluster est sain avant d'intervenir.

  2. Cordon du nœud, kubectl cordon <nœud> marque le nœud comme non-schedulable : les nouveaux pods ne seront plus placés dessus.

  3. Drain des pods, kubectl drain <nœud> --ignore-daemonsets --delete-emptydir-data évacue les pods existants vers d'autres nœuds.

  4. Intervention, maintenance OS, remplacement de disque, mise à jour des composants, reboot.

  5. Uncordon, kubectl uncordon <nœud> rend le nœud à nouveau éligible au scheduling une fois la maintenance terminée.

  6. Vérification, kubectl describe node <nœud> pour confirmer le retour à l'état Ready.

3 guides publiés

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

  • Ne jamais intervenir directement sur un nœud sans l'avoir drainé, les pods pourraient être interrompus brutalement
  • Les DaemonSets ne sont pas évacués par drain (normal), utilisez --ignore-daemonsets
  • Les emptyDir sont effacés par drain, vérifiez que ces données sont dispensables ou persistées ailleurs
  • La version skew policy n'a pas de règle unique : le kubelet et kube-proxy tolèrent 3 mineures de retard sur kube-apiserver depuis Kubernetes 1.25, le controller-manager et le scheduler 1 seule, et kubectl reste à 1 mineure de l'API, en avance comme en retard
  • Upgrader dans l'ordre de kubeadm : kubeadm sur le premier control plane, puis kubeadm upgrade apply, puis kubelet et kubectl sur ce nœud, et enfin les autres nœuds un par un avec kubeadm upgrade node

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens ce site gratuitement, sans publicité, sans profilage et sans compte à créer. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn