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 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 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 :

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.

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

  • Version 1.32 et ultérieure : cette fonctionnalité est 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 permet de diviser par deux le temps nécessaire pour mettre à niveau séquentiellement les pools de nœuds de deux versions. De plus, les mises à niveau de version intermédiaire 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 permet de limiter les perturbations 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 certains cas, vous pouvez mettre à niveau certains pools de nœuds 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 génère peu de trafic 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 grand intervalle de maintenance 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. Veillez à examiner vos règles de pare-feu pour apporter les modifications nécessaires.

  2. Pour effectuer la 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 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, la 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, 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é à partir de la version mineure cible.
  2. Mettez à niveau votre poste de travail administrateur vers la version cible. Attendez un message indiquant 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.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 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.

    Voici à titre d'exemple un extrait 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

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 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 d'apporter certaines 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 ne l'est pas déjà.

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

    gcloud components update
    
  2. Modifiez la règle 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 dont 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 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 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 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

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 plus besoin de suivre 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 dont 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 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 enregistré 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.

    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 de la ressource pour 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.