Mettre à jour un pool de nœuds

Cet article explique comment mettre à jour vos pools de nœuds. Vous pouvez mettre à jour vos pools de nœuds pour les raisons suivantes :

  • Mettre à niveau la version de votre pool de nœuds
  • Modifier le nombre de nœuds dans votre pool de nœuds
  • Modifier les annotations de votre pool de nœuds (uniquement via l'API)

Vous pouvez également modifier les paramètres supplémentaires de vos pools de nœuds qui n'apparaissent pas dans la liste ci-dessus. Pour obtenir la liste complète des paramètres que vous pouvez mettre à jour, consultez la documentation sur gcloud container azure node-pools update et projects.locations.azureNodePools.patch.

Mise à jour d'un processus

Cette section décrit les processus utilisés par GKE sur Azure pour mettre à jour un pool de nœuds. Le processus est différent en fonction de l'étendue des modifications nécessaires à apporter au pool de nœuds.

Mettre à jour la configuration uniquement

Si GKE sur Azure peut mettre à jour un pool de nœuds sans redémarrer ou recréer des ressources, il effectuera ces modifications. Par exemple, la mise à jour des annotations de votre pool de nœuds n'aura pas pour effet de redémarrer les instances.

Effectuer une mise à jour progressive

Lorsqu'une modification apportée à un pool de nœuds nécessite le redémarrage de machines virtuelles existantes, par exemple lors de la mise à jour de la version de Kubernetes, GKE sur Azure effectue les étapes suivantes :

  1. Modifiez le groupe de machines virtuelles identiques du pool de nœuds en effectuant une nouvelle configuration.
  2. Choisit une instance sous-jacente de nœud à mettre à jour.
  3. GKE sur Azure marque le nœud comme non ordonnançable et le draine. À ce stade, les nouveaux pods ne peuvent pas être programmés sur le nœud cible. Les objets de pods existants sur le nœud cible sont reprogrammés sur d'autres nœuds. Les pods qui ne peuvent pas être reprogrammés sur un autre nœud existant restent en phase En attente jusqu'à ce qu'ils puissent être planifiés.
  4. Mettez à jour l'instance pour récupérer la dernière configuration de son ensemble de ses machines virtuelles.
  5. Relancez et redémarrez l'instance.
  6. Attend que tous les nœuds de ce pool deviennent opérationnels.
  7. Si tous les nœuds de ce pool sont opérationnels, sélectionne un autre nœud jusqu'à ce que tous les nœuds soient mis à jour. Si un nœud n'est pas opérationnel, GKE sur Azure place le pool de nœuds dans l'état DEGRADED. Pour en savoir plus, consultez la section Mises à jour ayant échoué.

Protéger les charges de travail lors d'une mise à jour progressive du pool de nœuds

Pendant la mise à jour progressive du pool de nœuds, GKE sur Azure respecte la configuration
de PodDisruptionBudget jusqu'à une heure après le début du drainage d'un nœud. Au bout d'une heure, GKE sur Azure supprime tous les pods restants sur le nœud.

Lors de la mise à jour progressive, GKE sur Azure procède à un arrêt progressif de tous les nœuds à redémarrer ou à supprimer, avec un délai maximal de deux heures. Au bout de deux heures, s'il reste des objets de pod sur le nœud, GKE sur Azure supprime le nœud et réaffiche l'instance de machine virtuelle sous-jacente.

Redimensionner des pools de nœuds

L'autoscaler de cluster est activé par défaut dans les pools de nœuds GKE sur Azure. L'autoscaler de cluster redimensionne automatiquement le pool de nœuds en fonction des exigences de vos charges de travail. Pour plus d'informations sur l'autoscaler de cluster, consultez la page Autoscaler de cluster.

Lorsque vous modifiez le nombre maximal et minimal de nœuds dans le pool de nœuds, GKE sur Azure effectue des actions différentes en fonction de la nouvelle configuration et du nombre actuel de nœuds du pool de nœuds. Ces actions sont les suivantes :

  • Si le nombre de nœuds actuel du pool de nœuds se trouve déjà dans la nouvelle plage, GKE sur Azure ne modifie pas le nombre de nœuds du pool.

  • Si le nouveau nombre minimal de nœuds est supérieur au nombre actuel de nœuds dans le pool de nœuds, GKE sur Azure ajoute des nœuds jusqu'à ce que le pool atteigne la nouvelle taille minimale.

  • Si le nouveau nombre maximal de nœuds est inférieur au nombre de nœuds actuel dans le pool de nœuds, GKE sur Azure réduit la taille du pool en effectuant les actions suivantes :

    1. Mettre à jour la configuration de l'autoscaling sur l'ensemble de ses machines virtuelles dans le pool de nœuds
    2. Sélectionner un nœud à supprimer
    3. Confiner et vider le nœud
    4. Supprime l'instance de machine virtuelle sous-jacente
    5. Attendre que la machine virtuelle soit complètement supprimée
    6. Effectue une vérification d'état sur l'ensemble du pool de nœuds
    7. Répéter l'opération jusqu'à ce que le nombre de nœuds atteigne le nombre souhaité

Comment GKE sur Azure protège les charges de travail lors du redimensionnement du pool de nœuds

Pendant le redimensionnement du pool de nœuds, GKE sur Azure respecte la configuration PodDisruptionBudget pendant une heure au maximum après le début du drainage d'un nœud. Au bout d'une heure, GKE sur Azure supprime tous les objets de pod restants sur le nœud.

Lors du redimensionnement du pool de nœuds, GKE sur Azure effectue un arrêt progressif de tous les nœuds à redémarrer ou à supprimer, puis attend deux heures. Au bout de deux heures, s'il reste des objets de pod sur le nœud, GKE sur Azure supprime l'instance de machine virtuelle sous-jacente.

Consulter l'état d'échec de la mise à jour

Si GKE sur Azure effectue une vérification d'état après une mise à jour et que celle-ci échoue, le pool de nœuds est marqué comme DEGRADED. Vous pouvez trouver des informations sur l'état de votre cluster à l'aide de la commande Google Cloud CLI suivante :

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 de votre pool de nœuds.
  • CLUSTER_NAME : nom du cluster
  • GOOGLE_CLOUD_LOCATION : région Google Cloud qui gère votre cluster

La sortie inclut des informations sur l'état et la configuration de votre pool de nœuds.

Prérequis

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

Mettre à jour un pool de nœuds

Vous pouvez mettre à jour un pool de nœuds à l'aide de Google Cloud CLI. Pour mettre à jour un pool de nœuds, exécutez la commande suivante :

gcloud container azure node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version NODE_POOL_VERSION \
    --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, par exemple us-west1
  • NODE_POOL_VERSION : nouvelle version de pool de nœuds compatible
  • MIN_NODES : nouveau nombre minimal de nœuds que le pool de nœuds peut contenir. Doit être égal ou supérieur à 0.
  • MAX_NODES : nouveau nombre maximal de nœuds que le pool de nœuds peut contenir. Doit être au moins égal à 1 et la valeur de MIN_NODES.

Annuler une opération de mise à jour

Pour annuler une mise à jour en cours du pool de nœuds, exécutez la commande suivante :

gcloud container azure operations cancel OPERATION_NAME

Remplacez OPERATION_NAME par le nom de l'opération de mise à jour.

Notez que l'annulation d'une opération de 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.

Étapes suivantes