Arrêt de nœuds en douceur dans GKE sur Azure

À partir de la version 1.26, GKE sur Azure active automatiquement l'arrêt en douceur des nœuds. Cette fonctionnalité permet de gérer l'arrêt en douceur des pods lors de l'arrêt des nœuds. L'arrêt en douceur permet aux pods d'enregistrer leur état et de libérer des ressources avant l'arrêt du nœud. Cette méthode d'arrêt des pods réduit le risque de perte de données. Cela réduit également le risque d'interruption des autres pods et services qui dépendent des pods en cours d'arrêt ou qui interagissent avec eux, ce qui améliore la résilience de vos clusters.

Fonctionnement

Un événement tel qu'une maintenance planifiée, un scaling de nœud ou un problème matériel déclenche l'arrêt d'un nœud. Le composant kubelet détecte l'événement et lance le processus d'arrêt en douceur des nœuds en demandant à systemd de retarder l'arrêt du système pendant une durée spécifiée. Ce délai donne au nœud le temps de drainer et d'évincer les pods qui s'y exécutent.

L'objectif de l'arrêt en douceur du nœud est d'arrêter en douceur les pods non système et les pods système critiques avant l'arrêt du nœud. Les paramètres par défaut suivants sont utilisés :

  • ShutdownGracePeriod : 30 secondes
  • ShutdownGracePeriodCriticalPods : 15 secondes

Ces paramètres donnent aux pods non système 15 secondes pour s'arrêter en douceur avant d'être arrêtés de force. Les pods système critiques ont 15 secondes pour s'arrêter après l'arrêt des pods non-système. Toutefois, comme la fonctionnalité opère au mieux de ses possibilités, il est possible qu'un nœud ne puisse pas s'arrêter en douceur dans la période de 30 secondes désignée.

Déclencheurs et limites

Les événements qui déclenchent l'arrêt en douceur des nœuds incluent les événements planifiés tels que les éléments suivants:

  • Arrêts commandés par l'utilisateur
  • Cessation des instances
  • Maintenance planifiée
  • Réduction de la capacité d'un cluster

Dans ces scénarios, kubelet détecte l'événement d'arrêt du nœud et lance le processus d'arrêt en douceur du nœud.

En revanche, l'arrêt en douceur du nœud ne peut pas être activé lorsque la commande d'arrêt ne déclenche pas le mécanisme de verrouillage de l'inhibiteur systemd sur lequel le composant kubelet repose. Voici quelques exemples de ce type de situation :

  • Déconnexions réseau
  • Dysfonctionnements matériels
  • Ressources insuffisantes, telles que la mémoire ou le processeur
  • Coupures de courant inattendues.

Dans ces cas, le nœud peut s'arrêter brusquement, ce qui peut entraîner des perturbations ou une perte de données.