Kubernetes est conçu avec des capacités d'auto-réparation qui contribuent à maintenir la santé et la disponibilité des charges de travail. Il remplace automatiquement les conteneurs défaillants, reprogramme les charges de travail lorsque des nœuds deviennent indisponibles et veille à ce que l'état souhaité du système soit maintenu.
Redémarrage au niveau des conteneurs : Si un conteneur à l'intérieur d'un Pod échoue, Kubernetes le redémarre conformément à la restartPolicy.
Remplacement des réplicas : Si un Pod appartenant à un Deployment ou à un StatefulSet échoue, Kubernetes crée un Pod de remplacement afin de maintenir le nombre de réplicas spécifié. Si un Pod faisant partie d'un DaemonSet échoue, le plan de contrôle crée un Pod de remplacement qui s'exécute sur le même nœud.
Récupération du stockage persistant : Si un nœud exécute un Pod auquel est attaché un PersistentVolume (PV) et que ce nœud tombe en panne, Kubernetes peut rattacher le volume à un nouveau Pod sur un autre nœud.
Équilibrage de charge pour les Services : Si un Pod situé derrière un Service échoue, Kubernetes le retire automatiquement des points de terminaison du Service afin que le trafic soit uniquement dirigé vers des Pods sains.
Voici quelques-uns des composants clés qui fournissent les capacités d'auto-réparation de Kubernetes :
kubelet : S'assure que les conteneurs sont en cours d'exécution et redémarre ceux qui échouent.
Contrôleurs Deployment (via ReplicaSet), ReplicaSet, StatefulSet et DaemonSet : Maintiennent le nombre souhaité de réplicas de Pods.
Contrôleur PersistentVolume : Gère l'attachement et le détachement des volumes pour les charges de travail avec état.
Défaillances du stockage : Si un volume persistant devient indisponible, des étapes de récupération supplémentaires peuvent être nécessaires.
Erreurs applicatives : Kubernetes peut redémarrer les conteneurs, mais les problèmes sous-jacents de l'application doivent être résolus séparément.