Mettre à niveau les pools de nœuds

La mise à niveau séparée du plan de contrôle et des pools de nœuds de calcul dans un cluster d'utilisateur Google Distributed Cloud (logiciel uniquement) pour VMware vous permet de valider la compatibilité des charges de travail sur des pools de nœuds individuels et de répartir les mises à niveau sur des intervalles de maintenance plus courts.

Ce document s'adresse aux administrateurs et opérateurs informatiques qui gèrent le cycle de vie de l'infrastructure technologique sous-jacente. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le contenu Google Cloud , consultez Rôles utilisateur et tâches courantes de GKE. Avant de commencer, assurez-vous de bien connaître les sections Présentation de la mise à niveau, Règles de version pour les mises à niveau, Bonnes pratiques de mise à niveau et Mettre à niveau un cluster.

Limites

La mise à niveau des pools de nœuds séparément du plan de contrôle présente les limites suivantes :

  • Cette fonctionnalité est compatible avec les pools de nœuds Ubuntu et Container-Optimized OS, mais pas avec les pools de nœuds Windows.

  • Cette fonctionnalité n'est pas disponible lors de la mise à niveau de clusters non avancés vers des clusters avancés. Les clusters non avancés seront automatiquement mis à niveau vers des clusters avancés dans la version 1.33.

  • Version 1.31 : cette fonctionnalité n'est pas disponible sur les clusters avancés.

  • Version 1.32 et ultérieures : cette fonctionnalité est disponible sur les clusters avancés.

  • La version du pool de nœuds de l'équilibreur de charge doit être identique à celle du cluster. La mise à niveau d'un pool de nœuds d'équilibreur de charge (un pool de nœuds avec enableLoadBalancer: true) séparément du plan de contrôle ou le décalage entre les versions ne sont pas acceptés.

Pourquoi mettre à niveau le plan de contrôle et les pools de nœuds séparément ?

Dans certains cas, vous pouvez mettre à niveau certains pools de nœuds de calcul d'un cluster d'utilisateur, mais pas tous :

  • Vous pouvez d'abord mettre à niveau le plan de contrôle et un pool de nœuds dont le trafic est faible ou qui exécute vos charges de travail les moins critiques. Après avoir vérifié que vos charges de travail s'exécutent correctement sur la nouvelle version, vous pouvez mettre à niveau d'autres pools de nœuds jusqu'à ce qu'ils soient tous mis à niveau.

  • Au lieu d'utiliser un seul grand intervalle de maintenance pour la mise à niveau du cluster, vous pouvez mettre à niveau le cluster sur plusieurs intervalles de maintenance. Pour en savoir plus sur l'estimation de la durée d'un intervalle de maintenance, consultez Estimer le temps nécessaire et planifier un intervalle de maintenance.

  • Vous pouvez ignorer une version mineure lors de la mise à niveau des pools de nœuds afin de réduire le nombre de mises à niveau requises pour rester sur une version compatible, ce qui vous fait gagner du temps et réduit les interruptions de charge de travail. Pour en savoir plus, consultez Ignorer une version lors de la mise à niveau des pools de nœuds.

Avant de commencer

  1. Dans les versions 1.29 et ultérieures, les vérifications préliminaires côté serveur sont activées par défaut. Assurez-vous de vérifier vos règles de pare-feu pour apporter les modifications nécessaires.

  2. Pour passer à la version 1.28 ou ultérieure, vous devez activer kubernetesmetadata.googleapis.com et attribuer le rôle IAM kubernetesmetadata.publisher au compte de service de surveillance de la journalisation. Pour en savoir plus, consultez Exigences concernant l'API Google et Identity and Access Management (IAM).

  3. Assurez-vous que la version actuelle du cluster est la version 1.14 ou ultérieure.

Mettre à niveau le plan de contrôle et les pools de nœuds sélectionnés

La mise à niveau du plan de contrôle d'un cluster d'utilisateur séparément des pools de nœuds de calcul est possible à l'aide de gkectl, de Google Cloud CLI et de Terraform. Vous ne pouvez utiliser Terraform pour la mise à niveau que si vous avez créé le cluster d'utilisateur à l'aide de Terraform.

gkectl

  1. Définissez la version source et la version cible dans les variables d'espace réservé suivantes. Toutes les versions doivent être le numéro de version complet au format x.y.z-gke.N, par exemple 1.16.11-gke.25.

    Version Description
    SOURCE_VERSION La version actuelle du cluster.
    TARGET_VERSION Sélectionnez la version cible. Sélectionnez le correctif recommandé dans la version mineure cible.
  2. Mettez à niveau votre poste de travail administrateur vers la version cible. Attendez qu'un message indique que la mise à niveau a réussi.

  3. Importez les images d'OS correspondantes dans vSphere :

    gkectl prepare \
      --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    Remplacez ADMIN_CLUSTER_KUBECONFIG par le chemin d'accès au fichier kubeconfig de votre cluster d'administrateur.

  4. Effectuez les modifications suivantes dans le fichier de configuration du cluster d'utilisateur :

    • Définissez le champ gkeOnPremVersion sur la version cible, TARGET_VERSION.

    • Pour chaque pool de nœuds que vous souhaitez mettre à niveau, définissez le champ nodePools[i].gkeOnPremVersion sur une chaîne vide.

      • Dans la version 1.28 et les versions ultérieures, vous pouvez accélérer la mise à niveau du pool de nœuds en définissant le champ nodePools[i].updateStrategy.rollingUpdate.maxSurge sur une valeur entière supérieure à 1. Lorsque vous mettez à niveau des nœuds avec maxSurge, plusieurs nœuds sont mis à niveau en même temps qu'un seul nœud.
    • Pour chaque pool de nœuds que vous ne souhaitez pas mettre à niveau, définissez nodePools[i].gkeOnPremVersion sur la version source, SOURCE_VERSION. Notez que vous ne pouvez pas différer la mise à niveau des pools de nœuds d'équilibreur de charge (pools de nœuds avec enableLoadBalancer: true). Leur version doit correspondre à celle du cluster.

    L'exemple suivant montre une partie du fichier de configuration du cluster d'utilisateur. Il indique que le plan de contrôle et pool-1 seront mis à niveau vers TARGET_VERSION, mais que pool-2 restera à la version SOURCE_VERSION.

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: SOURCE_VERSION
      ...
    
  5. Mettez à niveau le plan de contrôle et les pools de nœuds sélectionnés :

    gkectl upgrade cluster \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG_FILE
    

    Remplacez USER_CLUSTER_CONFIG par le chemin d'accès au fichier de configuration de votre cluster d'utilisateur.

Mettre à niveau des pools de nœuds supplémentaires

En reprenant l'exemple précédent, supposons que tout fonctionne bien avec pool-1 et que vous souhaitez maintenant mettre à niveau pool-2.

  1. Dans le fichier de configuration de votre cluster d'utilisateur, sous pool-2, définissez gkeOnPremVersion sur une chaîne vide :

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: ""
      ...
    
  2. Exécutez gkectl update cluster pour appliquer la modification :

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG
    

gcloud CLI

La mise à niveau d'un cluster d'utilisateur nécessite d'apporter des modifications au cluster d'administrateur. La commande gcloud container vmware clusters upgrade effectue automatiquement les opérations suivantes :

  • Enregistre le cluster d'administrateur dans l'API GKE On-Prem s'il n'est pas déjà enregistré.

  • Télécharge et déploie un ensemble de composants sur le cluster d'administrateur. La version des composants correspond à celle que vous spécifiez pour la mise à niveau. Ces composants permettent au cluster d'administrateur de gérer les clusters d'utilisateur disposant de cette version.

Mettre à niveau le plan de contrôle

Procédez comme suit pour mettre à niveau le plan de contrôle du cluster d'utilisateur.

  1. Mettez à jour les composants de la gcloud CLI :

    gcloud components update
    
  2. Modifiez la règle de mise à niveau sur le cluster :

    gcloud container vmware clusters update USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --upgrade-policy control-plane-only=True
    

    Remplacez les éléments suivants :

    • USER_CLUSTER_NAME: nom du cluster d'utilisateur à migrer.

    • PROJECT_ID : ID du projet hôte de parc dans lequel le cluster d'utilisateur est membre. Il s'agit du projet que vous avez spécifié lors de la création du cluster. Si vous avez créé le cluster à l'aide de gkectl, il s'agit de l'ID de projet dans le champ gkeConnect.projectID du fichier de configuration du cluster.

    • REGION : région Google Cloud dans laquelle l'API GKE On-Prem s'exécute et stocke ses métadonnées. Si vous avez créé le cluster à l'aide d'un client API GKE On-Prem, il s'agit de la région que vous avez sélectionnée lors de la création du cluster. Si vous avez créé le cluster à l'aide de gkectl, il s'agit de la région que vous avez spécifiée lorsque vous avez enregistré le cluster dans l'API GKE On-Prem.

  3. Mettez à niveau le plan de contrôle du cluster :

    gcloud container vmware clusters upgrade USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --version=TARGET_VERSION
    

    Remplacez TARGET_VERSION par la version vers laquelle vous souhaitez effectuer la mise à niveau. Sélectionnez le correctif recommandé dans la version mineure cible.

    La sortie de la commande ressemble à ceci :

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    Dans l'exemple de résultat, la chaîne operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 est le OPERATION_ID de l'opération de longue durée. Vous pouvez vérifier l'état de l'opération en exécutant la commande suivante dans une autre fenêtre de terminal :

    gcloud container vmware operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=REGION
    

Mettre à niveau les pools de nœuds

Pour mettre à niveau les pools de nœuds après la mise à niveau du plan de contrôle du cluster d'utilisateur, procédez comme suit :

  1. Obtenez la liste des pools de nœuds sur le cluster d'utilisateur :

    gcloud container vmware node-pools list
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION
    
  2. Pour chaque pool de nœuds que vous souhaitez mettre à niveau, exécutez la commande suivante :

    gcloud container vmware node-pools update NODE_POOL_NAME \
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION \
      --version=TARGET_VERSION
    

Terraform

  1. Mettez à jour les composants de la gcloud CLI :

    gcloud components update
    
  2. Si vous ne l'avez pas déjà fait, enregistrez le cluster d'administrateur dans l'API GKE On-Prem. Une fois le cluster enregistré dans l'API GKE On-Prem, vous n'avez pas besoin de répéter cette étape.

  3. Téléchargez la nouvelle version des composants et déployez-les dans le cluster d'administrateur :

    gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --required-platform-version=TARGET_VERSION
    

    Remplacez les éléments suivants :

    • ADMIN_CLUSTER_NAME : nom du cluster d'administrateur.

    • PROJECT_ID : ID du projet hôte de parc dans lequel le cluster d'utilisateur est membre. Il s'agit du projet que vous avez spécifié lors de la création du cluster. Si vous avez créé le cluster à l'aide de gkectl, il s'agit de l'ID de projet dans le champ gkeConnect.projectID du fichier de configuration du cluster.

    • REGION : région Google Cloud dans laquelle l'API GKE On-Prem s'exécute et stocke ses métadonnées. Si vous avez créé le cluster à l'aide d'un client API GKE On-Prem, il s'agit de la région que vous avez sélectionnée lors de la création du cluster. Si vous avez créé le cluster à l'aide de gkectl, il s'agit de la région que vous avez spécifiée lorsque vous avez enregistré le cluster dans l'API GKE On-Prem.

    • TARGET_VERSION : version vers laquelle effectuer la mise à niveau. Sélectionnez le correctif recommandé dans la version mineure cible.

    La commande télécharge la version des composants que vous spécifiez dans --required-platform-version sur le cluster d'administrateur, puis déploie les composants. Ces composants permettent au cluster d'administrateur de gérer les clusters d'utilisateur disposant de cette version.

  4. Dans le fichier main.tf que vous avez utilisé pour créer le cluster d'utilisateur, remplacez on_prem_version par la nouvelle version dans la ressource du cluster.

  5. Ajoutez les éléments suivants à la ressource de cluster afin que seul le plan de contrôle soit mis à niveau :

    upgrade_policy {
      control_plane_only = true
    }
    
  6. Initialisez et créez le plan Terraform :

    terraform init
    

    Terraform installe les bibliothèques nécessaires, telles que le fournisseur Google Cloud.

  7. Examinez la configuration et apportez les modifications nécessaires :

    terraform plan
    
  8. Appliquez le plan Terraform pour mettre à niveau le plan de contrôle du cluster d'utilisateur :

    terraform apply
    

Mettre à niveau les pools de nœuds

Pour mettre à niveau les pools de nœuds après la mise à niveau du plan de contrôle du cluster d'utilisateur, procédez comme suit :

  1. Dans main.tf, dans la ressource de chaque pool de nœuds que vous souhaitez mettre à niveau, ajoutez ce qui suit :

    on_prem_version = "TARGET_VERSION"
    

    Exemple :

    resource "google_gkeonprem_vmware_node_pool" "nodepool-basic" {
    name = "my-nodepool"
    location = "us-west1"
    vmware_cluster = google_gkeonprem_vmware_cluster.default-basic.name
    config {
      replicas = 3
      image_type = "ubuntu_containerd"
      enable_load_balancer = false
    }
    on_prem_version = "1.16.0-gke.0"
    }
    
  2. Initialisez et créez le plan Terraform :

    terraform init
    
  3. Examinez la configuration et apportez les modifications nécessaires :

    terraform plan
    
  4. Appliquez le plan Terraform pour mettre à niveau les pools de nœuds :

    terraform apply
    

Dépannage

Si vous rencontrez un problème après la mise à niveau d'un pool de nœuds, vous pouvez revenir à la version précédente. Pour en savoir plus, consultez Effectuer un rollback d'un pool de nœuds après une mise à niveau.