Configurer le délai avant expiration pour les cas de non-respect des règles PDB

Ce document explique comment configurer une valeur de délai avant expiration en cas de drainage d'un nœud de cluster qui enfreint un budget d'interruption de pod (PDB).

Lorsqu'un nœud est drainé, tous les pods du nœud doivent être arrêtés. Par défaut, si la terminaison d'un pod enfreint un budget d'interruption de pod, le drainage du nœud est bloqué.

Dans certains cas, il est conseillé de configurer un délai maximal pendant lequel le drainage d'un nœud peut être bloqué par un cas de non-respect PDB. Par exemple, vous pouvez configurer un délai avant expiration avant de lancer la mise à jour ou la mise à niveau d'un cluster. Vous devrez peut-être configurer une valeur de délai avant expiration pour un nœud actuellement bloqué par un cas de non-respect PDB.

Définir un délai avant expiration

Chaque nœud est représenté par un objet Machine.

Répertoriez les objets Machine dans le cluster :

kubectl --kubeconfig CLUSTER_KUBECONFIG get machines

Remplacez CLUSTR_KUBECONIFG par le chemin d'accès au fichier kubeconfig du cluster.

Exemple de résultat :

my-node-pool-7f864959cd-cw472
my-node-pool-7f864959cd-kh86m
my-node-pool-7f864959cd-wtpvx

Ouvrez un objet Machine pour le modifier :

kubectl --kubeconfig CLUSTER_KUBECONFIG edit machine MACHINE_NAME

Remplacez MACHINE_NAME par le nom de l'objet Machine.

Dans l'éditeur, ajoutez l'annotation suivante :

onprem.cluster.gke.io/pdb-violation-timeout: TIMEOUT

Remplacez TIMEOUT par une chaîne qui spécifie la durée du délai avant expiration. Les unités valides sont "s", "m" et "h". Exemples de valeurs temporelles : "1h", "1h30m", "10m" et "100s".

Si vous définissez la valeur du délai avant expiration sur "0s", les cas de non-respect PDB n'expirent jamais. Ce comportement est identique à celui par défaut.

Exemple :

apiVersion: cluster.k8s.io/v1alpha1
kind: Machine
metadata:
  annotations:
    kubelet-version: 1.23.5-gke.1502
    onprem.cluster.gke.io/gke-on-prem-version: 1.12.0-gke.430
    vm-ip-address: 203.0.113.2
    onprem.cluster.gke.io/pdb-violation-timeout: "5m"

Fermez la session de modification.

Mises à jour progressives

Lors d'une mise à jour progressive, une machine de surutilisation est créée en premier. Ensuite, l'ancien nœud est drainé et, une fois tous les pods qu'il contient supprimés, l'ancien objet Machine et l'objet Node sont tous deux supprimés. L'annotation du délai avant expiration des cas de non-respect PDB n'est pas conservée sur le nouvel objet Machine.