Lorsque vous devez réparer ou gérer des nœuds, vous devez d'abord les passer en mode maintenance. Le fait de passer des nœuds en mode maintenance draine leurs pods/charges de travail de manière sécurisée et les exclut de la planification des pods. En mode maintenance, vous pouvez travailler sur vos nœuds sans risque de perturber le trafic de pod.
Fonctionnement
Les clusters Anthos sur bare metal permettent de placer des nœuds en mode de maintenance. Cette approche permet aux autres composants de cluster de savoir correctement que le nœud est en mode de maintenance. Lorsque vous placez un nœud en mode de maintenance, aucun pod supplémentaire ne peut être planifié sur le nœud et les pods existants sont arrêtés.
Au lieu d'utiliser le mode de maintenance, vous pouvez utiliser manuellement des commandes Kubernetes telles que kubectl cordon
et kubectl drain
sur un nœud spécifique. Si vous exécutez des clusters Anthos sur bare metal version 1.12.0 (anthosBareMetalVersion: 1.12.0
) ou antérieure, consultez le problème connu sur la page Nœuds non ordonnés si vous n'utilisez pas la procédure de mode de maintenance
Lorsque vous utilisez le processus de mode de maintenance, les clusters Anthos sur bare metal se comportent de la façon suivante :
Des rejets de nœuds sont ajoutés aux nœuds spécifiés pour indiquer qu'aucun pod ne peut être planifié ou exécuté sur les nœuds.
Un délai d'expiration de 20 minutes est appliqué pour garantir que les nœuds ne restent pas bloqués à attendre l'arrêt des pods. Les pods peuvent ne pas s'arrêter s'ils sont configurés pour tolérer tous les rejets ou s'ils disposent de finaliseurs. Les clusters Anthos sur bare metal tentent d'arrêter tous les pods, mais si le délai avant expiration est dépassé, le nœud est mis en mode de maintenance. Ce délai avant expiration empêche les pods d'exécuter des mises à niveau bloquantes.
Si une charge de travail basée sur des VM s'exécute sur le nœud, les clusters Anthos sur solution Bare Metal appliquent un
NodeSelector
au pod de l'instance de machine virtuelle (VMI), puis arrêtent le pod. L'élémentNodeSelector
garantit que le pod VMI est redémarré sur le même nœud lorsque celui-ci est supprimé du mode de maintenance.
Placer un nœud en mode de maintenance
Choisissez les nœuds que vous souhaitez passer en mode maintenance en spécifiant des plages d'adresses IP pour les nœuds sélectionnés sous maintenanceBlocks
dans votre fichier de configuration de cluster. Les nœuds que vous choisissez doivent être prêts et opérationnels dans le cluster.
Pour passer des nœuds en mode maintenance, procédez comme suit :
Modifiez le fichier de configuration du cluster pour sélectionner les nœuds à passer en mode maintenance.
Vous pouvez modifier le fichier de configuration avec l'éditeur de votre choix ou modifier directement la ressource personnalisée du cluster en exécutant la commande suivante :
kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
Remplacez les éléments suivants :
CLUSTER_NAMESPACE
: espace de noms du clusterCLUSTER_NAME
: nom du cluster.
Ajoutez la section
maintenanceBlocks
au fichier de configuration du cluster pour spécifier une adresse IP unique ou une plage d'adresses pour les nœuds que vous souhaitez passer en mode maintenance.L'exemple suivant montre comment sélectionner plusieurs nœuds en spécifiant une plage d'adresses IP :
metadata: name: my-cluster namespace: cluster-my-cluster spec: maintenanceBlocks: cidrBlocks: - 172.16.128.1-172.16.128.64
Enregistrez et appliquez la configuration de cluster mise à jour.
Anthos clusters on bare metal commence à passer les nœuds en mode maintenance.
Exécutez la commande suivante pour obtenir l'état des nœuds de votre cluster :
kubectl get nodes -n CLUSTER_NAME
La réponse est semblable à ce qui suit :
NAME STATUS ROLES AGE VERSION user-anthos-baremetal-01 Ready master 2d22h v1.17.8-gke.16 user-anthos-baremetal-04 Ready <none> 2d22h v1.17.8-gke.16 user-anthos-baremetal-05 Ready,SchedulingDisabled <none> 2d22h v1.17.8-gke.16 user-anthos-baremetal-06 Ready <none> 2d22h v1.17.8-gke.16
L'état
SchedulingDisabled
indique qu'un nœud est en mode maintenance.Exécutez la commande suivante pour obtenir le nombre de nœuds en mode maintenance :
kubectl get nodepools
La réponse devrait ressembler à ceci :
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN np1 3 0 0 1 0
La colonne
UNDERMAINTENANCE
de cet exemple montre qu'un nœud est en mode maintenance.Anthos clusters on Bare Metal ajoute également les rejets suivants aux nœuds lorsqu'ils sont placés en mode maintenance :
baremetal.cluster.gke.io/maintenance:NoExecute
baremetal.cluster.gke.io/maintenance:NoSchedule
Supprimer un nœud du mode de maintenance
Pour supprimer des nœuds du mode maintenance, procédez comme suit :
Modifiez le fichier de configuration du cluster pour effacer les nœuds que vous souhaitez supprimer du mode maintenance.
Vous pouvez modifier le fichier de configuration avec l'éditeur de votre choix ou modifier directement la ressource personnalisée du cluster en exécutant la commande suivante :
kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
Remplacez les éléments suivants :
CLUSTER_NAMESPACE
: espace de noms du clusterCLUSTER_NAME
: nom du cluster.
Modifiez les adresses IP pour supprimer des nœuds spécifiques du mode maintenance ou supprimez la section
maintenanceBlocks
pour supprimer tous les nœuds du mode maintenance.Enregistrez et appliquez la configuration de cluster mise à jour.
Utilisez les commandes
kubectl
pour vérifier l'état de vos nœuds.