Mettre à niveau les pools de nœuds

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

La mise à niveau des pools de nœuds séparément du plan de contrôle est possible pour les pools de nœuds Ubuntu et COS, mais pas pour les pools de nœuds Windows. De plus, cette fonctionnalité n'est pas disponible sur les clusters avancés.

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

  • Si vos clusters sont en version 1.16 ou ultérieure, vous pouvez ignorer une version mineure lors de la mise à niveau des pools de nœuds. Effectuer une mise à niveau en ignorant une version réduit de moitié le temps qu'il faudrait pour mettre à niveau deux versions de pool de nœuds de manière séquentielle. 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. Réduire le nombre de mises à niveau réduit les perturbations de la charge de travail et le temps de vérification. Pour en savoir plus, consultez la section Ignorer une version lors de la mise à niveau des pools de nœuds.

  • Dans certains cas, vous pouvez souhaiter mettre à niveau certains, mais pas tous les pools de nœuds d'un cluster d'utilisateur, par exemple:

    • Vous pouvez d'abord mettre à niveau le plan de contrôle et un pool de nœuds qui enregistre un trafic léger ou qui exécute vos charges de travail les moins critiques. Une fois que vous êtes convaincu 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 grand intervalle de maintenance pour la mise à niveau du cluster, vous pouvez effectuer la mise à niveau du cluster sur plusieurs intervalles de maintenance. Pour estimer la durée d'un intervalle de maintenance, consultez la section 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. Veillez à examiner 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 les Exigences concernant l'API Google et 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 la 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 Version actuelle du cluster.
    TARGET_VERSION Sélectionnez la version cible. Sélectionnez le correctif recommandé de la version mineure cible.
  2. Mettez à niveau votre poste de travail administrateur vers la version cible. Attendez qu'un message indiquant que la mise à niveau a réussi s'affiche.

  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. Apportez les modifications suivantes dans le fichier de configuration du cluster 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 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.nodePool[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 que pour 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.

    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 à 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 d'autres pools de nœuds

Pour reprendre l'exemple précédent, supposons que tout fonctionne bien avec pool-1 et que vous souhaitiez 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
    

CLI gcloud

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

  • Inscris 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 lot 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

Pour mettre à niveau le plan de contrôle du cluster d'utilisateur, procédez comme suit.

  1. Mettez à jour les composants de la Google Cloud CLI :

    gcloud components update
    
  2. Modifiez la stratégie de mise à niveau du 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 auquel le cluster d'utilisateurs appartient. 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 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 à mettre à 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

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

    gcloud components update
    
  2. Si ce n'est 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 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 auquel le cluster d'utilisateurs appartient. 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 inscrit 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.

    Cette 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 pour 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 créer le 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 pour 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 = 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 avoir mis à niveau un pool de nœuds, vous pouvez revenir à la version précédente. Pour en savoir plus, consultez la section Effectuer un rollback d'un pool de nœuds après une mise à niveau.