La fonctionnalité de réparation automatique des nœuds surveille en permanence l'état de chaque nœud d'un pool de nœuds. Si un nœud devient défaillant, la fonctionnalité de réparation automatique des nœuds 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 les nœuds individuels.
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 doit être réparé. Un nœud est considéré comme sain s'il signale un état Ready
.
Sinon, si l'é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 être dû à un état NotReady
, détecté lors de plusieurs 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 garantir à la fois l'état général 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
, le Pod Termination
Grace Period
et prend d'autres mesures pour minimiser les perturbations du cluster lors de la réparation des nœuds.
Respecter PodDisruptionBudget
pendant 30 minutes
Si un nœud doit être réparé, il n'est pas drainé et recréé immédiatement. 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é pour 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.
Respecter le délai de grâce avant l'arrêt 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 de réparation de nœuds supplémentaires
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 pour limiter les perturbations du cluster et 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 les pools de nœuds plutôt que sur les nœuds individuels.
Activer la réparation automatique pour un nouveau pool de nœuds
gcloud container aws node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--instance-type INSTANCE_TYPE \
--root-volume-size ROOT_VOLUME_SIZE \
--iam-instance-profile NODEPOOL_PROFILE \
--node-version NODE_VERSION \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--max-pods-per-node MAX_PODS_PER_NODE \
--location GOOGLE_CLOUD_LOCATION \
--subnet-id NODEPOOL_SUBNET \
--ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--tags "Name=CLUSTER_NAME-NODE_POOL_NAME" \
--enable-autorepair
Remplacez les éléments suivants :
NODE_POOL_NAME
: nom que vous avez choisi pour votre pool de nœuds. Pour obtenir les noms de vos pools de nœuds, exécutez la commandegcloud container aws node-pools list --cluster CLUSTER_NAME --location GOOGLE_CLOUD_LOCATION
.CLUSTER_NAME
: nom du cluster auquel associer le pool de nœudsINSTANCE_TYPE
: type d'instance de machine AWS souhaité pour ce pool de nœuds (par exemple,m5.large
).ROOT_VOLUME_SIZE
: taille souhaitée pour le volume racine de chaque nœud, en Go.NODEPOOL_PROFILE
: profil d'instance IAM pour les VM de pool de nœuds.NODE_VERSION
: version de Kubernetes à installer sur chaque nœud du pool de nœuds (par exemple, "1.32.4-gke.200")MIN_NODES
: nombre minimal de nœuds que le pool de nœuds peut contenir.MAX_NODES
: nombre maximal de nœuds que le pool de nœuds peut contenir.MAX_PODS_PER_NODE
: nombre maximal de pods pouvant être créés sur un nœud unique du pool.GOOGLE_CLOUD_LOCATION
: nom de l'emplacement Google Cloudà partir duquel ce pool de nœuds sera géré.NODEPOOL_SUBNET
: ID du sous-réseau sur lequel le pool de nœuds sera exécuté.- Il ne doit pas y avoir de chevauchement entre les plages d'adresses IP des pods/services du cluster et le réseau de sous-réseau du pool de nœuds. Pour en savoir plus sur la sélection des plages d'adresses IP des pods et des services pour votre cluster, consultez la page Sélectionner des plages CIDR pour votre cluster.
- Si ce sous-réseau se trouve en dehors du bloc CIDR principal du VPC, certaines étapes supplémentaires sont nécessaires. Pour en savoir plus, consultez la section Groupes de sécurité.
SSH_KEY_PAIR_NAME
: nom de la paire de clés SSH AWS créée pour l'accès SSH (facultatif).CONFIG_KMS_KEY_ARN
: nom de ressource Amazon (ARN) de la clé KMS AWS qui chiffre les données utilisateur.
Activer la réparation automatique pour un pool de nœuds existant
Pour activer la réparation automatique de nœuds sur un pool de nœuds existant, exécutez la commande suivante :
gcloud container aws 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
Activer la réparation automatique pour un pool de nœuds existant
gcloud container aws 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 AWS 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 AWS lance une opération de mise à jour du pool de nœuds. L'opération attend la fin des réparations de nœuds existantes avant de se poursuivre.
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 aws 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 aws operations list \
--location GOOGLE_CLOUD_LOCATION \
--filter="metadata.verb=repair AND metadata.target=projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/awsClusters/CLUSTER_NAME/awsNodePools/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
: votre 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 la réparation automatique des nœuds activée, vous pouvez générer un récapitulatif de l'état d'un pool de nœuds en exécutant la commande suivante :
gcloud container aws node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Un récapitulatif de l'état d'un pool de nœuds opérationnel 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écapitulatif 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.