Réparation automatique des nœuds
La fonctionnalité de réparation automatique des nœuds surveille en permanence l'état de chaque nœud dans un pool de nœuds. Si un nœud devient défaillant, la fonctionnalité de réparation automatique le répare automatiquement. Cette fonctionnalité réduit la probabilité de panne de cluster et de dégradations des performances, tout en réduisant au maximum la maintenance de vos clusters.
Vous pouvez activer la réparation automatique des nœuds lorsque vous créez ou mettez à jour un pool de nœuds. Notez que vous activez ou désactivez cette fonctionnalité sur les pools de nœuds plutôt que sur chaque nœuds.
Conditions de nœud non opérationnel
La réparation automatique des nœuds examine l'état de chaque nœud pour déterminer s'il nécessite une réparation. Un nœud est considéré comme sain s'il signale un état Ready
.
Sinon, si un état non opérationnel est signalé de manière consécutive pendant une durée spécifique, des réparations sont lancées.
Un état non opérationnel peut résulter d'un état NotReady
détecté lors de vérifications consécutives sur une période d'environ 15 minutes. Sinon, un état non opérationnel peut être
dû à l'épuisement de l'espace disque de démarrage, identifié sur une période d'environ
30 minutes
Vous pouvez vérifier manuellement et à tout moment les signaux d'état de votre nœud à l'aide de la commande kubectl get nodes
.
Stratégies de réparation des nœuds
La réparation automatique des nœuds suit certaines stratégies pour assurer l'intégrité globale du cluster et la disponibilité des applications pendant le processus de réparation. Cette section explique comment la fonctionnalité de réparation automatique des nœuds respecte les configurations PodDisruptionBudget
, respecte Pod Termination
Grace Period
et prend d'autres mesures qui minimisent les perturbations du cluster lors de la réparation des nœuds.
Honorez PodDisruptionBudget
pendant 30 minutes
Lorsqu'un nœud doit être réparé, il n'est pas instantanément drainé et recréé. Au lieu de cela, la fonctionnalité de réparation automatique des nœuds respecte les configurations PodDisruptionBudget (PDB) pendant 30 minutes au maximum, après quoi tous les pods du nœud sont supprimés. (Une configuration PDB définit, entre autres, le nombre minimal d'instances répliquées d'un pod particulier disponibles à tout moment).
En respectant PodDisruptionBudget
pendant environ 30 minutes, la fonction de réparation automatique de nœud permet aux pods d'être replanifiés et redistribués en toute sécurité sur les
autres nœuds sains du cluster. Cela permet de maintenir le niveau de disponibilité souhaité de l'application pendant le processus de réparation.
Une fois le délai de 30 minutes écoulé, la réparation automatique du nœud se poursuit
même si cela implique de ne pas respecter les PodDisruptionBudget
. Sans limite de temps, le processus de réparation peut s'arrêter indéfiniment si la configuration PodDisruptionBudget
empêche les évictions nécessaires à la réparation.
Respect du délai de grâce pour la résiliation des pods
La fonctionnalité de réparation automatique des nœuds respecte également un délai de grâce pour l'arrêt des pods d'environ 30 minutes. Le délai de grâce avant l'arrêt des pods permet aux pods de disposer d'une fenêtre de temps pour un arrêt progressif lors de la résiliation. Pendant la période de grâce, le kubelet d'un nœud est chargé d'exécuter les tâches de nettoyage libérant les ressources associées aux pods sur ce nœud. La réparation automatique des nœuds laisse jusqu'à 30 minutes au kubelet pour effectuer ce nettoyage. Si les 30 minutes allouées sont écoulées, le nœud est forcé de s'arrêter, que les pods aient été arrêtés correctement ou non.
Stratégies supplémentaires de réparation des nœuds
La réparation automatique des nœuds met également en œuvre les stratégies suivantes :
- Si plusieurs nœuds nécessitent une réparation, ils sont réparés un par un afin de limiter l'interruption des clusters et pour protéger les charges de travail.
- Si vous désactivez la réparation automatique de nœuds pendant le processus de réparation, les réparations en cours se poursuivent néanmoins jusqu'à ce que l'opération de réparation aboutisse ou échoue.
Activer et désactiver la réparation automatique des nœuds
Vous pouvez activer ou désactiver la réparation automatique des nœuds lors de la création ou de la mise à jour d'un pool de nœuds. Vous activez ou désactivez cette fonctionnalité sur des pools de nœuds plutôt que sur des nœuds.
Activer la réparation automatique pour un nouveau pool de nœuds
gcloud container azure node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--node-version 1.29.4-gke.200 \
--vm-size VM_SIZE \
--max-pods-per-node 110 \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--azure-availability-zone AZURE_ZONE \
--ssh-public-key SSH_PUBLIC_KEY" \
--subnet-id SUBNET_ID \
--enable-autorepair
Remplacez les éléments suivants :
NODE_POOL_NAME
: nom unique du pool de nœuds, par exemplenode-pool-1
CLUSTER_NAME
: nom de votre cluster GKE sur AzureGOOGLE_CLOUD_LOCATION
: zone Google Cloud qui gère votre clusterNODE_VERSION
: version de Kubernetes à installer sur chaque nœud du pool de nœuds (par exemple, "1.29.4-gke.200")VM_SIZE
: taille de VM Azure compatibleMIN_NODES
: nombre minimal de nœuds dans le pool de nœuds. Pour plus d'informations, consultez la section Autoscaler de cluster.MAX_NODES
: nombre maximal de nœuds dans le pool de nœudsAZURE_ZONE
: zone de disponibilité Azure dans laquelle GKE on Azure lance le pool de nœuds. Par exemple,3
.SSH_PUBLIC_KEY
: le texte de votre clé publique SSH.SUBNET_ID
: ID du sous-réseau du pool de nœuds
Activer la réparation automatique pour un pool de nœuds existant
Pour activer la réparation automatique des nœuds sur un pool de nœuds existant, exécutez la commande suivante:
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--enable-autorepair
Remplacez les éléments suivants :
NODE_POOL_NAME
: nom unique du pool de nœuds, par exemplenode-pool-1
CLUSTER_NAME
: nom du clusterGOOGLE_CLOUD_LOCATION
: région Google Cloud qui gère votre cluster
Désactiver la réparation automatique pour un pool de nœuds existant
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--no-enable-autorepair
Remplacez les éléments suivants :
NODE_POOL_NAME
: nom unique du pool de nœuds, par exemplenode-pool-1
CLUSTER_NAME
: nom du clusterGOOGLE_CLOUD_LOCATION
: région Google Cloud qui gère votre cluster
Notez que GKE sur Azure désactive la réparation automatique des nœuds de manière progressive. Lorsque vous désactivez la réparation automatique des nœuds pour un pool de nœuds existant, GKE sur Azure lance une opération de mise à jour du pool de nœuds. L'opération attend la fin de toutes les réparations de nœuds existantes avant de continuer.
Vérifier si la réparation automatique des nœuds est activée
Exécutez la commande suivante pour vérifier si la réparation automatique des nœuds est activée ou non :
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Remplacez les éléments suivants :
NODE_POOL_NAME
: nom unique du pool de nœuds, par exemplenode-pool-1
CLUSTER_NAME
: nom du clusterGOOGLE_CLOUD_LOCATION
: région Google Cloud qui gère votre cluster
Historique des réparations de nœuds
Vous pouvez afficher l'historique des réparations effectuées sur un pool de nœuds en exécutant la commande suivante :
gcloud container azure operations list \
--location GOOGLE_CLOUD_LOCATION \
--filter="metadata.verb=repair AND metadata.target=projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/azureClusters/CLUSTER_NAME/azureNodePools/NODEPOOL_NAME
Remplacez les éléments suivants :
GOOGLE_CLOUD_LOCATION
: région Google Cloud compatible qui gère votre cluster, par exempleus-west1
PROJECT_ID
: projet Google CloudCLUSTER_NAME
: nom du clusterNODE_POOL_NAME
: nom unique du pool de nœuds, par exemplenode-pool-1
Récapitulatif de l'état du pool de nœuds
Une fois que vous avez activé la réparation automatique des nœuds, vous pouvez générer un état de pool de nœuds en exécutant la commande suivante:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Un résumé opérationnel d'un pool de nœuds ressemble à l'exemple suivant:
{ "name": "some-np-name", "version": "some-version", "state": "RUNNING", ... "errors": [ { "message": "1 node(s) is/are identified as unhealthy among 2 total node(s) in the node pool. No node is under repair." } ], }
Le résumé de l'état du pool de nœuds vous aide à comprendre l'état actuel du pool de nœuds. Dans cet exemple, le résumé contient un message d'erreur indiquant que l'un des deux nœuds du pool de nœuds n'est pas opérationnel. Il indique également qu'aucun nœud n'est actuellement en cours de réparation.