Mettre à niveau les pools de nœuds

Cette page explique comment mettre à niveau séparément le plan de contrôle et les pools de nœuds dans un cluster d'utilisateur créé avec Google Distributed Cloud (logiciel uniquement) sur VMware. Cette page est destinée 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 Google Cloud contenu, consultez Rôles utilisateur et tâches courantes de GKE. Avant de lire ce document, assurez-vous de bien comprendre la planification et l'exécution des mises à niveau de Google Distributed Cloud, comme décrit ci-dessous :

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 COS, 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 versions 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 de l'équilibreur de charge (pool de nœuds avec enableLoadBalancer: true) séparément du plan de contrôle ou avec un décalage de version n'est pas compatible.

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

  • Si vos clusters sont de version 1.16 ou ultérieure, vous pouvez ignorer une version mineure lors de la mise à niveau des pools de nœuds. L'exécution d'une mise à niveau avec saut de version réduit de moitié le temps nécessaire pour mettre à niveau séquentiellement les pools de nœuds de deux versions. De plus, les mises à niveau avec saut de version vous permettent d'augmenter le délai entre les mises à niveau nécessaires pour rester sur une version compatible. La réduction du nombre de mises à niveau diminue les interruptions de la charge de travail et le temps de vérification. Pour en savoir plus, consultez Ignorer une version lors de la mise à niveau des pools de nœuds.

  • Dans certaines situations, vous pouvez mettre à niveau certains pools de nœuds de calcul d'un cluster d'utilisateur, mais pas tous. Par exemple :

    • Vous pouvez d'abord mettre à niveau le plan de contrôle et un pool de nœuds qui a un trafic léger ou qui exécute vos charges de travail les moins critiques. Une fois que vous êtes sûr 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 que tous les pools de nœuds soient mis à niveau.

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

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 effectuer une mise à niveau vers la version 1.28 ou une version 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 les API Google et IAM.

  3. Assurez-vous que la version actuelle du cluster est la version 1.14 ou une version 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 compatible avec gkectl, Google Cloud CLI et 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, tel que 1.16.11-gke.25.

    Version Description
    SOURCE_VERSION Version actuelle du cluster.
    TARGET_VERSION Sélectionnez la version cible. Sélectionnez le correctif recommandé à partir de la version mineure cible.
  2. Mettez à niveau votre station de travail administrateur vers la version cible. Attendez un message indiquant que la mise à niveau a réussi.

  3. Importez les images de l'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.nodePool[i].gkeOnPremVersion sur la 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 nodePools.nodePool[i].updateStrategy.rollingUpdate.maxSurge champ 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.nodePool[i].gkeOnPremVersion sur la version source, SOURCE_VERSION. Notez que vous ne pouvez pas retenir les pools de nœuds de l'équilibreur de charge (pools de nœuds avec enableLoadBalancer: true) ; leur version doit correspondre à celle du cluster.

    Voici à titre d'exemple un extrait de fichier de configuration de cluster d'utilisateur. Il spécifie que le plan de contrôle et pool-1 seront mis à niveau vers TARGET_VERSION, mais que pool-2 restera sur 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 correctement avec pool-1 et que vous souhaitez maintenant mettre à niveau pool-2.

  1. Dans votre fichier de configuration de cluster d'utilisateur, sous pool-2, définissez gkeOnPremVersion sur la 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 quelques modifications dans le cluster d'administrateur. La commande gcloud container vmware clusters upgrade effectue automatiquement les opérations suivantes :

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

  • Télécharge et déploie un bundle 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 Google Cloud CLI :

    gcloud components update
    
  2. Modifiez la stratégie 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 : Google Cloud région 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 d'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 inscrit 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 effectuer la mise à niveau. Sélectionnez le correctif recommandé à partir de 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

Procédez comme suit pour mettre à niveau les pools de nœuds une fois le plan de contrôle du cluster d'utilisateur mis à niveau :

  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 Google Cloud CLI :

    gcloud components update
    
  2. Si ce n'est pas déjà fait, inscrivez le cluster d'administrateur dans l'API GKE On-Prem. Une fois le cluster inscrit dans l'API GKE On-Prem, vous n'avez plus besoin d'effectuer cette étape.

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

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

    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 : Google Cloud région 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 d'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 inscrit le cluster dans l'API GKE On-Prem.

    • TARGET_VERSION : version vers laquelle effectuer la mise à niveau. Sélectionnez le correctif recommandé à partir de 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 dans la ressource de cluster par la nouvelle version.

  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 Google Cloud fournisseur.

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

    terraform plan
    
  8. Appliquez le plan Terraform pour créer le cluster d'utilisateur :

    terraform apply
    

Mettre à niveau les pools de nœuds

Procédez comme suit pour mettre à niveau les pools de nœuds une fois le plan de contrôle du cluster d'utilisateur mis à niveau :

  1. Dans main.tf, dans la ressource de chaque pool de nœuds que vous souhaitez mettre à niveau, ajoutez les éléments suivants :

    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 = true
    }
    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 créer le cluster d'utilisateur :

    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.