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
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.
Pour passer à la version 1.28 ou ultérieure, vous devez activer
kubernetesmetadata.googleapis.comet attribuer le rôle IAMkubernetesmetadata.publisherau compte de service de surveillance de la journalisation. Pour en savoir plus, consultez Exigences concernant l'API Google et Identity and Access Management (IAM).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
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 exemple1.16.11-gke.25.Version Description SOURCE_VERSIONLa version actuelle du cluster. TARGET_VERSIONSélectionnez la version cible. Sélectionnez le correctif recommandé dans la version mineure cible. Mettez à niveau votre poste de travail administrateur vers la version cible. Attendez qu'un message indique que la mise à niveau a réussi.
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_KUBECONFIGpar le chemin d'accès au fichierkubeconfigde votre cluster d'administrateur.Effectuez les modifications suivantes dans le fichier de configuration du cluster d'utilisateur :
Définissez le champ
gkeOnPremVersionsur la version cible,TARGET_VERSION.Pour chaque pool de nœuds que vous souhaitez mettre à niveau, définissez le champ
nodePools[i].gkeOnPremVersionsur 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.maxSurgesur une valeur entière supérieure à 1. Lorsque vous mettez à niveau des nœuds avecmaxSurge, plusieurs nœuds sont mis à niveau en même temps qu'un seul nœud.
- 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
Pour chaque pool de nœuds que vous ne souhaitez pas mettre à niveau, définissez
nodePools[i].gkeOnPremVersionsur 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 avecenableLoadBalancer: 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-1seront mis à niveau versTARGET_VERSION, mais quepool-2restera à la versionSOURCE_VERSION.gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...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_CONFIGpar 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.
Dans le fichier de configuration de votre cluster d'utilisateur, sous
pool-2, définissezgkeOnPremVersionsur une chaîne vide :gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...Exécutez
gkectl update clusterpour 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.
Mettez à jour les composants de la gcloud CLI :
gcloud components updateModifiez 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 degkectl, il s'agit de l'ID de projet dans le champgkeConnect.projectIDdu 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 degkectl, 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.
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_VERSIONpar 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-75e59179est 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 :
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
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
Mettez à jour les composants de la gcloud CLI :
gcloud components updateSi 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.
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 degkectl, il s'agit de l'ID de projet dans le champgkeConnect.projectIDdu 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 degkectl, 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-versionsur 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.Dans le fichier
main.tfque vous avez utilisé pour créer le cluster d'utilisateur, remplacezon_prem_versionpar la nouvelle version dans la ressource du cluster.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 }Initialisez et créez le plan Terraform :
terraform initTerraform installe les bibliothèques nécessaires, telles que le fournisseur Google Cloud.
Examinez la configuration et apportez les modifications nécessaires :
terraform planAppliquez 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 :
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" }Initialisez et créez le plan Terraform :
terraform initExaminez la configuration et apportez les modifications nécessaires :
terraform planAppliquez 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.