Mettre à niveau automatiquement des nœuds


Cette page vous explique comment configurer la mise à niveau automatique de nœuds dans Google Kubernetes Engine (GKE).

Aperçu

Les mises à niveau automatiques des nœuds vous permettent de maintenir les nœuds de votre cluster à jour avec la révision du plan de contrôle du cluster en cas de mise à jour du plan de contrôle en votre nom. Lorsque vous créez un cluster ou un pool de nœuds à l'aide de la console Google Cloud ou de la commande gcloud, la mise à niveau automatique des nœuds est activée par défaut.

Pour en savoir plus, consultez la page concernant les mises à niveau des clusters et des nœuds.

Les mises à niveau automatiques des nœuds offrent plusieurs avantages :

  • Réduction des frais de gestion : vous n'avez pas besoin de suivre ni de mettre à jour manuellement vos nœuds lorsque le plan de contrôle est mis à niveau en votre nom.
  • Sécurité améliorée : il arrive que de nouveaux binaires soient publiés pour résoudre un problème de sécurité. Grâce aux mises à niveau automatiques, GKE s'assure de lui-même que les mises à jour de sécurité les plus récentes sont appliquées.
  • Facilité d'utilisation : fournit un moyen simple de maintenir les nœuds à jour avec les dernières fonctionnalités de Kubernetes.

Les pools de nœuds pour lesquels les mises à niveau automatiques sont activées bénéficient d'une planification des mises à niveau lorsqu'ils répondent aux critères de sélection (annoncés dans les notes de version). Les déploiements sont échelonnés sur plusieurs semaines afin de garantir la stabilité du cluster et de l'ensemble des appareils. Lorsque la mise à niveau est effectuée, les nœuds sont drainés et recréés de façon à correspondre à la version actuelle du plan de contrôle. Les modifications sur les disques de démarrage des VM de nœuds ne persistent pas lors de la recréation de nœuds. Si vous souhaitez conserver les modifications lors de la recréation des nœuds, utilisez un DaemonSet.

La mise à niveau automatique des nœuds n'est pas disponible pour les clusters alpha. Si vous utilisez un cluster avec des pools de nœuds Windows Server, consultez la page Mettre à niveau les pools de nœuds Windows Server avant d'activer la mise à niveau automatique des nœuds.

Vérifier l'état de la mise à niveau automatique des nœuds pour un pool de nœuds existant

Vous pouvez vérifier si la mise à niveau automatique est activée ou désactivée pour un pool de nœuds à l'aide de la console Google Cloud ou de la commande gcloud.

gcloud

Pour vérifier l'état de la mise à niveau automatique d'un pool de nœuds, exécutez la commande suivante :

gcloud container node-pools describe NODE_POOL_NAME \
  --cluster CLUSTER_NAME \
  --zone COMPUTE_ZONE

Remplacez l'élément suivant :

  • NODE_POOL_NAME : nom du pool de nœuds.
  • CLUSTER_NAME : nom du cluster contenant le pool de nœuds.
  • COMPUTE_ZONE : zone de calcul du cluster.

Console

Pour vérifier l'état de la mise à niveau automatique d'un pool de nœuds, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez afficher.

  3. Cliquez sur l'onglet Nœuds.

  4. Sous Pools de nœuds, cliquez sur le nom du pool de nœuds à afficher.

  5. Sur la page Détails du pool de nœuds, sous Gestion, affichez la valeur du champ Mise à niveau automatique.

Activer les mises à niveau automatiques des nœuds pour un pool de nœuds existant

Lorsque vous créez un cluster à l'aide de la console Google Cloud ou de la commande gcloud, la mise à niveau automatique des nœuds est activée par défaut.

Vous pouvez activer la mise à niveau automatique des nœuds si elle est actuellement désactivée.

gcloud

Pour activer la mise à niveau automatique d'un pool de nœuds existant, exécutez la commande suivante :

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --enable-autoupgrade

Remplacez l'élément suivant :

  • NODE_POOL_NAME : nom du pool de nœuds.
  • CLUSTER_NAME : nom du cluster contenant le pool de nœuds.
  • COMPUTE_ZONE : zone de calcul du cluster.

Console

Pour activer la mise à niveau automatique d'un pool de nœuds existant, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Cliquez sur l'onglet Nœuds.

  4. Sous Pools de nœuds, cliquez sur le nom du pool de nœuds que vous souhaitez modifier.

  5. Sur la page Détails du pool de nœuds, cliquez sur Modifier.

  6. Sous Gestion, cochez la case Activer la mise à niveau automatique.

  7. Cliquez sur Enregistrer.

Pour mieux contrôler le moment où la mise à niveau automatique des nœuds a lieu, vous pouvez envisager de configurer des intervalles de maintenance et des exclusions.

Vérifier l'état des mises à niveau des nœuds

Vous pouvez vérifier l'état d'une mise à niveau à l'aide de gcloud container operations.

Affichez la liste de toutes les opérations en cours ou terminées dans le cluster :

gcloud container operations list

Chaque opération se voit attribuer un ID d'opération et un type d'opération, ainsi que des heures de début et de fin, un cluster cible et un état. Cette liste se présente comme dans l'exemple suivant :

NAME                              TYPE                ZONE           TARGET              STATUS_MESSAGE  STATUS  START_TIME                      END_TIME
operation-1505407677851-8039e369  CREATE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT16:47:57.851933021Z  20xx-xx-xxT16:50:52.898305883Z
operation-1505500805136-e7c64af4  UPGRADE_CLUSTER     us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:40:05.136739989Z  20xx-xx-xxT18:41:09.321483832Z
operation-1505500913918-5802c989  DELETE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:41:53.918825764Z  20xx-xx-xxT18:43:48.639506814Z

Pour obtenir plus d'informations sur une opération déterminée, spécifiez l'ID de cette opération, comme indiqué dans la commande suivante :

gcloud container operations describe OPERATION_ID

Exemple :

gcloud container operations describe operation-1507325726639-981f0ed6
endTime: '20xx-xx-xxT21:40:05.324124385Z'
name: operation-1507325726639-981f0ed6
operationType: UPGRADE_CLUSTER
selfLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/operations/operation-1507325726639-981f0ed6
startTime: '20xx-xx-xxT21:35:26.639453776Z'
status: DONE
targetLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/clusters/...
zone: us-central1-a

Vérifier les paramètres de mise à niveau du pool de nœuds

Vous pouvez afficher les détails de la stratégie de mise à niveau du pool de nœuds utilisée pour vos pools de nœuds à l'aide de la commande gcloud container node-pools describe. Pour les mises à niveau bleu-vert, la commande renvoie également la phase actuelle de la mise à niveau.

Exécutez la commande ci-dessous.

gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom du pool de nœuds à décrire.
  • CLUSTER_NAME : nom du cluster du pool de nœuds à décrire.

Cette commande génère les paramètres de mise à niveau actuels. L'exemple suivant montre le résultat si vous utilisez la stratégie de mise à niveau bleu-vert.

upgradeSettings:
  blueGreenSettings:
    nodePoolSoakDuration: 1800s
    standardRolloutPolicy:
      batchNodeCount: 1
      batchSoakDuration: 10s
  strategy: BLUE_GREEN

Si vous utilisez la stratégie de mise à niveau bleu-vert, le résultat inclut également des détails sur les paramètres de mise à niveau bleu-vert et sa phase intermédiaire actuelle. L'exemple suivant montre comment cela se présente :

updateInfo:
  blueGreenInfo:
    blueInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{BLUE_INSTANCE_GROUP_NAME}
    bluePoolDeletionStartTime: {BLUE_POOL_DELETION_TIME}
    greenInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{GREEN_INSTANCE_GROUP_NAME}
    greenPoolVersion: {GREEN_POOL_VERSION}
    phase: DRAINING_BLUE_POOL

Désactiver les mises à niveau automatiques des nœuds

Bien que cette pratique ne soit pas recommandée, vous pouvez désactiver la mise à niveau automatique des nœuds pour un pool de nœuds existant si le cluster sous-jacent n'est pas enregistré dans un canal de publication.

Éléments à prendre en compte avant de désactiver les mises à niveau automatiques des nœuds

Si vous désactivez les mises à niveau automatiques des nœuds pour un pool de nœuds, GKE ne met pas à jour la version des nœuds. La désactivation des mises à niveau automatiques des nœuds n'empêche pas GKE de mettre à niveau le plan de contrôle de votre cluster.

La désactivation empêche les mises à jour de version, mais pas toutes les tâches de maintenance

La désactivation des mises à niveau automatiques des nœuds empêche uniquement GKE de mettre à jour la version des nœuds, mais n'empêche pas GKE de lancer d'autres tâches de maintenance. Par exemple, même lorsque les mises à niveau automatiques des nœuds sont désactivées, le déclenchement de la rotation des adresses IP, l'activation de la règle de réseau ou le déclenchement de la Migration PSC sur un cluster recrée tous les nœuds avec la même version que le plan de contrôle, quelle que soit la version sélectionnée pour le pool de nœuds. Pour contrôler la chronologie de maintenance, utilisez des intervalles et des exclusions de maintenance.

La désactivation signifie que cela relève de la compatibilité des nœuds du plan de contrôle.

Dans ce cas, vous devez vous assurer que les nœuds du cluster exécutent une version compatible avec celle du cluster, et que celle-ci respecte les règles de compatibilité de la version de Kubernetes et du décalage de versions. À partir de la version 1.19 de GKE, GKE met à niveau les nœuds qui exécutent une version non compatible une fois que la version est arrivée en fin de vie afin de garantir l'intégrité du cluster et son alignement sur la règle d'asymétrie de version Open Source. Les nœuds exécutant des versions non compatibles peuvent ne pas être mis à niveau immédiatement en fin de vie, et la durée réelle peut varier à la discrétion de Google.

La désactivation n'arrête pas les opérations en cours

La désactivation des mises à niveau automatiques des nœuds n'arrête ni n'annule aucune mise à niveau en cours sur les nœuds des pools de nœuds. Pour annuler ou arrêter des mises à niveau en cours, consultez la page Annuler une mise à niveau de nœuds. L'annulation d'une mise à niveau de nœuds peut être utile dans les cas où les charges de travail échouent sur les nœuds mis à niveau et que vous souhaitez éviter toute interruption supplémentaire.

Si la mise à niveau est terminée pour l'ensemble du pool de nœuds, elle ne peut pas être annulée et un rollback ne peut pas être effectué. Pour revenir à une version antérieure du pool de nœuds, consultez la page Revenir à une version antérieure des pools de nœuds.

Désactiver les mises à niveau automatiques des nœuds pour un pool de nœuds existant

gcloud

Pour désactiver la mise à niveau automatique d'un pool de nœuds existant, exécutez la commande suivante :

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --no-enable-autoupgrade

Console

Pour désactiver la mise à niveau automatique d'un pool de nœuds existant, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Cliquez sur l'onglet Nœuds.

  4. Sous Pools de nœuds, cliquez sur le nom du pool de nœuds que vous souhaitez modifier.

  5. Sur la page Détails du pool de nœuds, cliquez sur Modifier.

  6. Sous Gestion, décochez la case Activer la mise à niveau automatique.

  7. Cliquez à nouveau sur Enregistrer pour modifier le cluster.

Créer un cluster ou un pool de nœuds avec mise à niveau automatique des nœuds

gcloud

Pour créer un cluster sur lequel les mises à niveau automatiques sont activées pour le pool de nœuds par défaut, spécifiez l'indicateur --enable-autoupgrade dans la commande gcloud container clusters create :

gcloud container clusters create CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --enable-autoupgrade

Pour créer un pool de nœuds sur lequel les mises à niveau automatiques sont activées, spécifiez l'option --enable-autoupgrade dans la commande gcloud container node-pools create :

gcloud container node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --enable-autoupgrade

Console

Les mises à niveau automatiques sont activées par défaut pour les clusters et les pools de nœuds créés avec la console Google Cloud. Consultez les pages Créer un cluster ou Ajouter et gérer des pools de nœuds pour obtenir des instructions sur la création de clusters et de pools de nœuds.

Vous pouvez désactiver les mises à niveau automatiques pour les nouveaux pools de nœuds. Sur la page de création du cluster, cliquez sur le nom du pool de nœuds que vous souhaitez modifier, puis décochez la case Activer la mise à niveau automatique.

Recevoir des notifications de mise à niveau

GKE publie des notifications de mise à niveau sur Pub/Sub. Vous disposez ainsi d'un canal pour réceptionner les informations concernant vos clusters.

Pour en savoir plus, consultez la section Recevoir des notifications de mise à niveau des clusters.

Modifier les paramètres de mise à niveau de la surutilisation

Pour en savoir plus sur la modification des paramètres de mise à niveau de la surutilisation, consultez la page Configurer les mises à niveau de la surutilisation.

Exercer un contrôle lors d'une mise à niveau du pool de nœuds

Lors des mises à niveau automatiques et manuelles des pools de nœuds, vous pouvez effectuer les actions suivantes :

Annuler la mise à niveau d'un pool de nœuds

Vous pouvez annuler une mise à jour à tout moment. Pour en savoir plus sur ce qui se passe lorsque vous annulez une mise à niveau de la surutilisation, consultez la page Annuler une mise à niveau de la surutilisation. Pour en savoir plus sur ce qui se passe lorsque vous annulez une mise à niveau bleu-vert, consultez la page Annuler une mise à niveau bleu-vert.

  1. Obtenez l'ID d'opération de la mise à niveau :

    gcloud container operations list
    
  2. Annulez la mise à niveau :

    gcloud container operations cancel OPERATION_ID
    

Consultez la documentation sur gcloud container operations cancel.

Reprendre la mise à niveau d'un pool de nœuds

Vous pouvez reprendre une mise à niveau en lançant manuellement la mise à niveau, en spécifiant la version cible de la mise à niveau d'origine.

Par exemple, si vous avez suspendu une mise à niveau en cours vers la version 1.23.1-gke.100, vous pouvez la reprendre en relançant la même mise à niveau sur le pool de nœuds, en ciblant la version 1.23.1-gke.100.

Pour en savoir plus sur ce qui se passe lorsque vous réactivez une mise à niveau, consultez les pages Reprendre une mise à niveau de la surutilisation et Mise à niveau bleu-vert.

Pour reprendre une mise à niveau, utilisez la commande suivante :

    gcloud container clusters upgrade CLUSTER_NAME \
      --node-pool=NODE_POOL_NAME \
      --cluster-version VERSION

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom du pool de nœuds pour lequel vous souhaitez reprendre la mise à niveau du pool de nœuds.
  • CLUSTER_NAME : nom du cluster du pool de nœuds pour lequel vous souhaitez reprendre la mise à niveau.
  • VERSION : version cible de la mise à niveau du pool de nœuds annulé.

Pour en savoir plus, consultez la documentation sur gcloud container clusters upgrade.

Effectuer un rollback pour mettre à niveau un pool de nœuds

Vous pouvez effectuer un rollback d'un pool de nœuds pour revenir à l'état d'origine des nœuds mis à niveau avant le début de la mise à niveau du pool de nœuds.

Utilisez la commande rollback si une mise à niveau en cours a été annulée, si la mise à niveau a échoué ou si la mise à niveau est incomplète en raison d'un intervalle de maintenance dont le délai a expiré. Si vous souhaitez spécifier la version, suivez les instructions pour rétrograder le pool de nœuds.

Pour en savoir plus sur ce qui se passe lorsque vous effectuez un rollback de la mise à niveau d'un pool de nœuds, consultez la page Restaurer une mise à niveau de la surutilisation ou Effectuer un rollback vers une mise à niveau bleu-vert.

Pour effectuer le rollback d'une mise à jour, exécutez la commande suivante :

gcloud container node-pools rollback NODE_POOL_NAME \
  --cluster CLUSTER_NAME

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom du pool de nœuds pour lequel vous souhaitez effectuer un rollback de la mise à niveau du pool de nœuds.
  • CLUSTER_NAME : nom du cluster du pool de nœuds pour lequel vous souhaitez effectuer un rollback de la mise à niveau.

Consultez la documentation sur gcloud container node-pools rollback.

Effectuer la mise à niveau d'un pool de nœuds

Si vous utilisez la stratégie de mise à niveau bleu-vert, vous pouvez effectuer une mise à niveau du pool de nœuds pendant la phase de stabilisation, en ignorant le reste du temps de stabilisation.

Pour savoir comment effectuer une mise à niveau du pool de nœuds, consultez la page Effectuer une mise à niveau du pool de nœuds.

Pour effectuer une mise à niveau lors de l'utilisation de la stratégie de mise à niveau bleu-vert, exécutez la commande suivante :

gcloud container node-pools complete-upgrade NODE_POOL_NAME \
  --cluster CLUSTER_NAME

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom du pool de nœuds pour lequel vous souhaitez effectuer la mise à niveau.
  • CLUSTER_NAME : nom du cluster du pool de nœuds pour lequel vous souhaitez effectuer la mise à niveau.

Consultez la documentation sur gcloud container node-pools complete-upgrade.

Étapes suivantes