Mettre à jour un pool de nœuds

Après avoir créé un cluster, vous pouvez modifier ses pools de nœuds. Seuls certains paramètres d'un pool de nœuds peuvent être mis à jour, tels que sa taille, sa clé de chiffrement et ses groupes de sécurité. Ce document explique comment effectuer ces opérations et d'autres mises à jour courantes sur un pool de nœuds.

Toutefois, ce document ne fournit pas une liste exhaustive des commandes de mise à jour. Si vous devez mettre à jour un paramètre non décrit dans ce document, voir la documentation de gcloud container aws node-pools update et de projects.locations.awsNodePools.patch.

Avant de commencer

Pour mettre à jour un pool de nœuds, vous devez disposer de l'autorisation Identity and Access Management gkemulticloud.googleapis.com/awsNodePools.update.

Pour obtenir des instructions sur la gestion des autorisations, consultez Accordez des rôles IAM aux utilisateurs.

Mettre à jour un pool de nœuds

Les sections suivantes expliquent comment effectuer différentes mises à jour d'un pool de nœuds. Un pool de nœuds est un groupe de nœuds au sein d'un cluster qui possèdent tous la même configuration. Tous les nœuds d'un cluster doivent appartenir à un pool de nœuds.

Vous pouvez mettre à jour plusieurs paramètres d'un pool de nœuds en même temps en les spécifiant tous dans la même commande. Toutefois, par souci de clarté, ce document explique comment mettre à jour un seul paramètre à la fois.

Modifier la version du pool de nœuds

Dans GKE sur AWS, la modification de la version d'un pool de nœuds implique de modifier la version de GKE exécutée sur les nœuds de ce pool de nœuds.

Pour modifier la version du pool de nœuds, spécifiez la nouvelle version à l'aide de l'indicateur node-version dans la commande suivante :

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version NODE_POOL_VERSION

Remplacez les éléments suivants :

Mettre à jour le type d'instance de pool de nœuds

Un type d'instance de pool de nœuds est le type d'instance AWS EC2 utilisé pour créer les nœuds d'un pool de nœuds. Par exemple, le type d'instance m5.xlarge dispose de quatre processeurs virtuels, de 16 Go de mémoire et de 32 Go d'espace de stockage SSD.

Pour modifier le type d'instance de votre pool de nœuds, spécifiez le nouveau type d'instance en utilisant l'option instance-type dans la commande suivante:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --instance-type=INSTANCE_TYPE

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom de votre pool de nœuds.
  • CLUSTER_NAME : nom du cluster
  • GOOGLE_CLOUD_LOCATION : région Google Cloud qui gère votre cluster
  • INSTANCE_TYPE : nouveau type d'instance de machine AWS souhaité pour ce pool de nœuds. Exemple :m5.xlarge

Les mises à jour du type d'instance de pool de nœuds ne doivent pas modifier l'architecture de processeur sous-jacente de l'instance EC2. Par exemple, si votre pool de nœuds d'origine utilise des instances avec processeurs x86, votre type d'instance mis à jour doit continuer d'utiliser des processeurs x86, plutôt qu'une autre architecture.

Pour obtenir la liste complète des instances compatibles et de leurs architectures sous-jacentes, consultez types d'instances AWS compatibles.

Effectuer une rotation de la clé de chiffrement d'un pool de nœuds

Pour en savoir plus sur la mise à jour des clés de chiffrement KMS de votre pool de nœuds, consultez la section Rotation des clés.

Remplacer les groupes de sécurité des pools de nœuds

Pour mettre à jour les groupes de sécurité associés à un pool de nœuds, exécutez la commande suivante :

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --security-group-ids=SECURITY_GROUP_IDS

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom du pool de nœuds à mettre à jour.
  • CLUSTER_NAME : nom du cluster
  • GOOGLE_CLOUD_LOCATION : région Google Cloud qui gère votre cluster
  • SECURITY_GROUP_IDS: liste de groupes de sécurité séparés par une virgule à associer au pool de nœuds.

Pour les clusters exécutant GKE version 1.25 ou ultérieure, la mise à jour peut être effectuée dynamiquement sans avoir à redémarrer les nœuds. Il s'agit de l'approche recommandée pour les clusters qui utilisent GKE 1.25 ou une version ultérieure.

Pour effectuer des mises à jour dynamiques, le rôle d'agent de service d'API doit disposer des autorisations IAM AWS suivantes :

  • ec2:ModifyInstanceAttribute
  • ec2:DescribeInstances

Ces autorisations sont automatiquement attribuées au rôle d'agent de service d'API si vous choisissez le rôle d'agent de service d'API par défaut lorsque vous créez votre cluster.

Pour les clusters exécutant des versions antérieures de GKE ou les versions 1.25 ou ultérieures, mais pour lesquels l'agent de service d'API ne dispose pas des autorisations nécessaires pour effectuer une mise à jour dynamique, la mise à jour est effectuée à l'aide d'une mise à jour par étapes. Les mises à jour progressives sont plus perturbatrices que les mises à jour dynamiques, car elles redémarrent les nœuds, contrairement aux mises à jour dynamiques. Pour en savoir plus sur les mises à jour progressives, consultez la section Mises à jour de l'affluence.

Supprimer des groupes de sécurité de pool de nœuds

Vous pouvez supprimer tous les groupes de sécurité autres que ceux par défaut associés à votre pool de nœuds en exécutant la commande suivante. Pour en savoir plus sur la sécurité par défaut des groupes, consultez Groupes de sécurité des pools de nœuds.

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --clear-security-group-ids

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom du pool de nœuds à mettre à jour.
  • CLUSTER_NAME : nom du cluster
  • GOOGLE_CLOUD_LOCATION : région Google Cloud qui gère votre cluster

Redimensionner un pool de nœuds

Pour modifier la taille de votre pool de nœuds (c'est-à-dire le nombre de nœuds dans le pool de nœuds), attribuez de nouvelles valeurs aux indicateurs min-nodes et max-nodes dans la commande suivante :

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom du pool de nœuds à mettre à jour.
  • CLUSTER_NAME : nom du cluster auquel associer le pool de nœuds.
  • GOOGLE_CLOUD_LOCATION: région Google Cloud compatible qui gère votre cluster Exemple :us-west1
  • MIN_NODES : nombre minimal de nœuds que le pool de nœuds peut contenir. La valeur peut être 0 ou supérieure.
  • MAX_NODES : nombre maximal de nœuds que le pool de nœuds peut contenir. La valeur doit être supérieure ou égale à 1, et supérieure ou égale à MIN_NODES.

En savoir plus sur le redimensionnement des pools de nœuds

Avant de redimensionner un pool de nœuds, il est important d'évaluer les répercussions potentielles sur vos charges de travail.

Actions de redimensionnement et leurs conséquences

Lors du redimensionnement des pools de nœuds, différentes actions sont déclenchées en fonction de la nouvelle configuration et de l'état actuel des nœuds. Il est essentiel de comprendre ces actions et leurs implications :

  • Aucune modification: si le nombre de nœuds actuel correspond déjà à la nouvelle valeur, GKE sur AWS n'ajuste pas le nombre de nœuds.
  • Augmenter le minimum: si le nouveau nombre minimal de nœuds est supérieur au nombre existant, GKE sur AWS ajoute de manière incrémentielle des nœuds jusqu'à ce que la nouvelle taille minimale nouvellement définie soit atteinte.
  • Diminuer le nombre maximal: si vous remplacez le nombre maximal de nœuds par une valeur inférieure au nombre existant, GKE sur AWS effectue les opérations suivantes :
    • Désactive l'autoscaler de cluster.
    • Définit la taille minimale spécifiée pour le groupe Auto Scaling du pool de nœuds.
    • Sélectionne des nœuds individuels à supprimer. Chaque nœud est déchargé de ses tâches puis est arrêté. Cette procédure se poursuit jusqu'à ce que la taille maximale spécifiée soit atteinte.
    • Modifie le groupe d'autoscaling du pool de nœuds pour l'aligner sur la nouvelle taille maximale.
    • Réactive l'autoscaler de cluster une fois la taille maximale atteinte.

Pour en savoir plus sur l'autoscaler de cluster, consultez la page À propos de l'autoscaler de cluster.

Protection de la charge de travail lors du redimensionnement

Pour garantir la disponibilité continue des charges de travail lors du redimensionnement du pool de nœuds, GKE sur AWS fournit les protections suivantes :

  • Lors d'un drainage de nœud, GKE sur AWS respecte la configuration PodDisruptionBudget pendant une heure maximum. Les pods restants sur le nœud après cette période sont supprimés.

  • Lorsque les nœuds sont configurés pour être redémarrés ou supprimés, GKE sur AWS s'assure de leur arrêt progressif et attend jusqu'à deux heures. Si des pods restent sur le nœud après cette période, l'instance de machine virtuelle sous-jacente est supprimée.

Vérifier l'état de votre pool de nœuds

Pour vérifier que la mise à jour a réussi, vous pouvez vérifier l'état du 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

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom de votre pool de nœuds.
  • CLUSTER_NAME : nom du cluster
  • GOOGLE_CLOUD_LOCATION : région Google Cloud qui gère votre cluster

GKE sur AWS tente d'effectuer les mises à jour demandées dans le pool de nœuds puis effectue une vérification de l'état. Si l'une des étapes de mise à jour échoue, le pool de nœuds est marqué comme DEGRADED.

Annuler une opération de mise à jour

Avant de pouvoir annuler une mise à jour de pool de nœuds en cours, vous devez déterminer le nom de l'opération en cours. Pour lister les opérations en cours et leurs noms respectifs, exécutez la commande suivante :

gcloud container aws operations list--filter="status=PENDING OR status=RUNNING"
    --location GOOGLE_CLOUD_LOCATION

Remplacez GOOGLE_CLOUD_LOCATION par la région Google Cloud compatible qui gère votre cluster. Exemple :us-west1

Recherchez le OPERATION_NAME de la mise à jour que vous souhaitez annuler dans la sortie de la commande. Pour obtenir la liste des opérations, consultez gcloud container aws operation list.

Une fois que vous avez identifié la OPERATION_NAME, vous pouvez annuler l'opération à l'aide de la commande suivante:

gcloud container aws operations cancel OPERATION_NAME
    --location GOOGLE_CLOUD_LOCATION

Remplacez les éléments suivants :

Notez que l'annulation d'une mise à jour de pool de nœuds en cours n'annule pas les mises à jour de nœuds déjà terminées. Cela peut entraîner une mise à jour partielle du pool de nœuds.