Lorsque vous créez un cluster d'utilisateur, vous devez configurer au moins un pool de nœuds, qui est un groupe de nœuds partageant tous la même configuration. Une fois le cluster créé, vous pouvez ajouter des pools de nœuds, en mettre à jour les paramètres et les supprimer.
Choisir un outil pour la gestion des pools de nœuds
La façon dont vous créez, mettez à jour et supprimez des pools de nœuds varie selon que le cluster est géré par l'API GKE On-Prem ou non. Un cluster d'utilisateur est géré par l'API GKE On-Prem si l'une des conditions suivantes est remplie :
Le cluster a été créé dans la console Google Cloud ou à l'aide de la Google Cloud CLI (gcloud CLI), qui configure automatiquement l'API GKE On-Prem pour gérer le cluster.
Le cluster a été créé à l'aide de
gkectl
, mais il a été configuré pour être géré par l'API GKE On-Prem.
Si l'API GKE On-Prem gère un cluster d'utilisateur, vous pouvez utiliser la console ou la gcloud CLI pour gérer les pools de nœuds. Si le cluster d'utilisateur n'est pas géré par l'API GKE On-Prem, utilisez gkectl
sur le poste de travail administrateur pour gérer les pools de nœuds.
Si vous prévoyez d'utiliser gcloud CLI, procédez comme suit sur un ordinateur sur lequel la gcloud CLI est installée:
Connectez-vous avec votre compte Google.
gcloud auth login
Mettez à jour les composants :
gcloud components update
Ajouter un pool de nœuds
Si le cluster est géré par l'API GKE On-Prem, vous pouvez utiliser la console ou la gcloud CLI pour ajouter un pool de nœuds. Toutefois, vous devez utiliser gkectl
sur votre poste de travail administrateur pour configurer les paramètres suivants du pool de nœuds:
- Windows pour le type d'image de l'OS
- Datastore vSphere
Tags vSphere Si vous souhaitez associer des tags à toutes les VM d'un pool de nœuds, votre compte utilisateur vCenter doit disposer des droits d'ajout de tags vSphere suivants :
- "vSphere Tagging.Assign" ou "Unassign vSphere Tag"
- "vSphere Tagging.Assign" ou "Unassign vSphere Tag on Object" (vSphere 7)
Avant d'ajouter un autre pool de nœuds, vérifiez qu'il y a suffisamment d'adresses IP disponibles sur le cluster.
gkectl
Procédez comme suit sur votre poste de travail administrateur:
Dans votre fichier de configuration de cluster d'utilisateur, remplissez la section
nodePools
.Vous devez spécifier les champs suivants :
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
Les champs suivants sont facultatifs. Si vous n'incluez pas
nodePools[i].bootDiskSizeGB
ounodePools[i].osImageType
, les valeurs par défaut sont utilisées.nodePools[i].labels
nodePools[i].taints
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
Exécutez la commande ci-dessous.
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Remplacez les éléments suivants :
ADMIN_CLUSTER_KUBECONFIG
par le chemin d'accès au fichier kubeconfig du cluster d'administrateur.USER_CLUSTER_CONFIG
par le chemin d'accès au fichier de configuration du cluster d'utilisateur.
Exemple de configuration
Il y a quatre pools de nœuds dans l'exemple de configuration suivant, avec des attributs différents pour chacun :
pool-1
: seuls les attributs minimaux requis sont spécifiés.pool-2
: inclutvsphere.datastore
etvsphere.tags
.pool-3
: incluttaints
etlabels
.pool-4
: inclutosImageType
etbootDiskSizeGB
.
nodePools:
- name: pool-1
cpus: 4
memoryMB: 8192
replicas: 5
- name: pool-2
cpus: 8
memoryMB: 16384
replicas: 3
vsphere:
datastore: my_datastore
tags:
- category: "purpose"
name: "testing"
- name: pool-3
cpus: 4
memoryMB: 8192
replicas: 5
taints:
- key: "example-key"
effect: NoSchedule
labels:
environment: production
app: nginx
- name: pool-4
cpus: 4
memoryMB: 8192
replicas: 5
osImageType: cos
bootDiskSizeGB: 40
Console
Dans la console, accédez à la page de présentation des clusters Google Kubernetes Engine.
Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.
Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.
Cliquez sur
Ajouter un pool de nœuds.Configurez le pool de nœuds :
- Saisissez le nom du pool de nœuds.
- Saisissez le nombre de vCPUs pour chaque nœud du pool (au moins quatre par nœud de calcul de cluster d'utilisateur).
- Saisissez la taille de la mémoire en mébioctets (Mio) pour chaque nœud du pool (8192 Mio au minimum par nœud de nœud de calcul de cluster d'utilisateur, doit être un multiple de 4).
- Dans le champ Nœuds, saisissez le nombre de nœuds du pool (minimum 3).
Sélectionnez le type d'image d'OS : Ubuntu Containerd ou COS.
Saisissez la taille du disque de démarrage en gibioctets (Gio) (la valeur par défaut est 40 Gio).
Dans la section Métadonnées du pool de nœuds (facultatif), si vous souhaitez ajouter des étiquettes et des rejets Kubernetes, procédez comme suit:
- Cliquez sur + Ajouter des libellés Kubernetes. Saisissez la clé et la valeur du libellé. Répétez l'opération autant de fois que nécessaire.
- Cliquez sur + Ajouter un rejet. Saisissez la clé, la valeur et l'effet pour le rejet. Répétez l'opération autant de fois que nécessaire.
Cliquez sur Créer.
La console Google Cloud affiche État du cluster : modifications en cours. Cliquez sur Afficher les détails pour afficher la Condition d'état de la ressource et les Messages d'état.
gcloud CLI
Exécutez la commande suivante pour créer un pool de nœuds:
gcloud container vmware node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --image-type=IMAGE_TYPE \ --boot-disk-size=BOOT_DISK_SIZE \ --cpus=vCPUS \ --memory=MEMORY \ --replicas=NODES
Remplacez les éléments suivants :
NODE_POOL_NAME
: nom de votre choix pour le pool de nœuds. Ce nom doit :- contenir au maximum 40 caractères ;
- ne contenir que des caractères alphanumériques minuscules ou un trait d'union
-
; - commencer par un caractère alphabétique ;
- se terminer par un caractère alphanumérique.
USER_CLUSTER_NAME
: nom du cluster d'utilisateur dans lequel le pool de nœuds sera créé.
FLEET_HOST_PROJECT_ID
: ID du projet dans lequel le cluster est enregistré.LOCATION
: emplacement Google Cloud associé au cluster d'utilisateur.IMAGE_TYPE
: type d'image de système d'exploitation à exécuter sur les VM du pool de nœuds. Définissez ce paramètre sur l'une des valeurs suivantes:ubuntu_containerd
oucos
.BOOT_DISK_SIZE
: taille du disque de démarrage en gibioctets (Gio) pour chaque nœud du pool. La valeur minimale est de 40 Gio.vCPUs
: nombre de processeurs virtuels pour chaque nœud du pool de nœuds. Le minimum est de 4.MEMORY
: taille de la mémoire en mébioctets (Mio) pour chaque nœud du pool. La valeur minimale est de 8 192 Mio par nœud de calcul de cluster d'utilisateur, et la valeur doit être un multiple de 4.NODES
: Nombre de nœuds dans le pool de nœuds. Le minimum est de trois.
Exemple :
gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5
Vous pouvez également spécifier les éléments suivants :
--enable-load-balancer
: uniquement pertinent pour l'équilibreur de charge MetalLB. Si elle est spécifiée, elle permet au haut-parleur MetalLB de s'exécuter sur les nœuds du pool. Au moins un pool de nœuds doit être activé pour l'équilibreur de charge MetalLB.--image=IMAGE
: nom de l'image de l'OS dans vCenter.--node-labels=KEY=VALUE,...
: liste d'étiquettes Kubernetes (paires clé/valeur) séparées par une virgule appliquée à chaque nœud du pool.--node-taints=KEY=VALUE:EFFECT,...
Liste de rejets Kubernetes séparés par une virgule appliqués à chaque nœud du pool. Les rejets sont des paires clé/valeur associées à un effet. Les rejets sont utilisés avec des tolérances pour la planification des pods. Spécifiez l'une des options suivantes pour EFFECT:NoSchedule
,PreferNoSchedule
ouNoExecute
.
Exemple :
gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5 \ --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
Pour plus d'informations sur les autres indicateurs facultatifs, consultez la documentation de référence de gcloud.
Mettre à jour un pool de nœuds
Lorsque vous augmentez le nombre d'instances répliquées, GKE sur VMware ajoute le nombre de nœuds requis au cluster d'utilisateur. Lorsque vous réduisez le nombre d'instances répliquées, les nœuds sont supprimés. La modification du nombre d'instances dupliquées d'un pool de nœuds n'interrompt pas les charges de travail. Assurez-vous que vos adresses IP sont disponibles si vous augmentez le nombre d'instances dupliquées.
Si vous mettez à jour un autre champ du pool de nœuds, une mise à jour progressive est déclenchée sur le cluster. Lors d'une mise à jour progressive, GKE sur VMware crée un nœud, puis supprime un ancien nœud. Ce processus est répété jusqu'à ce que tous les anciens nœuds soient remplacés par de nouveaux nœuds. Ce processus n'entraîne pas de temps d'arrêt, mais le cluster doit disposer d'une adresse IP supplémentaire à utiliser pendant la mise à jour.
Supposons qu'un pool de nœuds ait N nœuds à la fin d'une mise à jour. Vous devez alors disposer d'au moins N + 1 adresse IP pour les nœuds de ce pool. Cela signifie que si vous redimensionnez un cluster en ajoutant des nœuds à un ou plusieurs pools, vous devez disposer d'au moins une adresse IP de plus que le nombre total de nœuds qui se trouveront dans tous les pools de nœuds du cluster à la fin du redimensionnement. Pour en savoir plus, consultez la section Vérifier que suffisamment d'adresses IP sont disponibles.
Pour mettre à jour un pool de nœuds sur un cluster d'utilisateur :
gkectl
Modifiez les valeurs des champs que vous souhaitez modifier dans la section
nodePools
du fichier de configuration du cluster d'utilisateur.Mettez à jour le cluster :
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Remplacez les éléments suivants :
ADMIN_CLUSTER_KUBECONFIG
par le chemin d'accès au fichier kubeconfig du cluster d'administrateur.USER_CLUSTER_CONFIG
par le chemin d'accès au fichier de configuration du cluster d'utilisateur.
Mettre à jour le osImageType
utilisé par un pool de nœuds
Pour mettre à jour un pool de nœuds afin d'utiliser un autre osImageType
, vous devez utiliser la ligne de commande. Pour modifier le osImageType
utilisé par un pool de nœuds, mettez à jour le fichier de configuration du pool de nœuds comme indiqué dans l'exemple suivant, puis exécutez gkectl update cluster
.
nodePools: - name: np-1 cpus: 4 memoryMB: 8192 replicas: 3 osImageType: ubuntu_containerd
Console
Vous ne pouvez mettre à jour que les champs suivants à l'aide de la console:
- Nombre d'instances dupliquées
- Memory
- Nombre de vCPU
Pour mettre à jour d'autres champs, utilisez gcloud CLI ou gkectl
.
Dans la console, accédez à la page de présentation des clusters Google Kubernetes Engine.
Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.
Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.
Cliquez sur l'onglet Nœuds.
Cliquez sur le nom du pool de nœuds que vous souhaitez modifier.
Cliquez sur
Modifier à côté du champ que vous souhaitez modifier, puis sur OK.Cliquez sur
pour revenir à la page précédente.La console Google Cloud affiche État du cluster : modifications en cours. Cliquez sur Afficher les détails pour afficher la Condition d'état de la ressource et les Messages d'état.
gcloud CLI
Vous pouvez également répertorier les pools de nœuds pour obtenir le nom de celui que vous souhaitez mettre à jour:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Exécutez la commande suivante pour mettre à jour le pool de nœuds:
gcloud container vmware node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --ATTRIBUTE_TO_UPDATE \ ...
Remplacez les éléments suivants :
NODE_POOL_NAME
: nom du pool de nœuds à mettre à jour.USER_CLUSTER_NAME
: nom du cluster d'utilisateur contenant le pool de nœuds.LOCATION
: emplacement Google Cloud associé au cluster d'utilisateur.ATTRIBUTE_TO_UPDATE
: une ou plusieurs options permettant de mettre à jour les attributs du pool de nœuds. Par exemple, pour modifier le nombre de processeurs virtuels et de nœuds dans le pool, exécutez la commande suivante.
gcloud container vmware node-pools update default-pool \ --cluster=user-cluster-1 \ --project=example-project-12345 --location=us-west1 \ --cpus=10 \ --replicas=6
Pour en savoir plus sur les attributs de pool de nœuds que vous pouvez mettre à jour, consultez la documentation de référence sur gcloud.
Vérifier vos modifications
Pour vérifier que vos pools de nœuds ont été créés ou mis à jour comme prévu, inspectez les nœuds de cluster :
gkectl
Exécutez la commande ci-dessous.
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide
Si vous devez annuler vos modifications, modifiez le fichier de configuration du cluster et exécutez la commande gkectl update cluster
.
Console
Dans la console, accédez à la page de présentation des clusters Google Kubernetes Engine.
Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.
Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.
Cliquez sur l'onglet Nœuds.
Cliquez sur le nom du pool de nœuds que vous souhaitez afficher.
gcloud CLI
Exécutez la commande ci-dessous.
gcloud container vmware node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Supprimer un pool de nœuds
Bien que vous puissiez supprimer des pools de nœuds, votre cluster d'utilisateur doit disposer d'au moins un pool de nœuds. La suppression d'un pool de nœuds entraîne la suppression immédiate des nœuds de ce pool, que ceux-ci exécutent ou non des charges de travail.
Pour supprimer un pool de nœuds d'un cluster d'utilisateur, procédez comme suit :
gkectl
Assurez-vous qu'aucune charge de travail n'est en cours d'exécution sur les nœuds concernés.
Supprimez sa définition de la section
nodePools
du fichier de configuration du cluster d'utilisateur.Mettez à jour le cluster :
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Remplacez les éléments suivants :
[ADMIN_CLUSTER_KUBECONFIG]
par le chemin d'accès au fichier kubeconfig du cluster d'administrateur.[USER_CLUSTER_CONFIG]
par le chemin d'accès au fichier de configuration du cluster d'utilisateur.
Console
Assurez-vous qu'aucune charge de travail n'est en cours d'exécution sur les nœuds concernés.
Dans la console, accédez à la page de présentation des clusters Google Kubernetes Engine.
Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.
Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.
Cliquez sur l'onglet Nœuds.
Cliquez sur le nom du pool de nœuds que vous souhaitez supprimer.
Cliquez sur
Supprimer.Cliquez sur
pour revenir à la page précédente.La console Google Cloud affiche État du cluster : modifications en cours. Cliquez sur Afficher les détails pour afficher la Condition d'état de la ressource et les Messages d'état.
gcloud CLI
Vous pouvez également répertorier les pools de nœuds pour obtenir le nom du pool que vous souhaitez supprimer:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Exécutez la commande suivante pour supprimer le pool de nœuds:
gcloud container vmware node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Remplacez les éléments suivants :
NODE_POOL_NAME
: nom du pool de nœuds à supprimer.USER_CLUSTER_NAME
: nom du cluster d'utilisateur contenant le pool de nœuds.LOCATION
: emplacement Google Cloud associé au cluster d'utilisateur.
Dépannage
En général, la commande
gkectl update cluster
fournit des détails en cas d'échec. Si la commande aboutit et que vous ne voyez pas les nœuds, suivez le guide Diagnostiquer les problèmes de cluster pour résoudre le problème.Il est possible que les ressources du cluster soient insuffisantes. Par exemple, il peut arriver qu'il n'y ait plus d'adresse IP disponible lors de la création ou de la mise à jour du pool de nœuds. Consultez la page Redimensionner un cluster d'utilisateur pour savoir comment vérifier que des adresses IP sont disponibles.
Vous pouvez également consulter le guide général de dépannage.
Symptôme : Plus rien ne se passe après le message
Creating node MachineDeployment(s) in user cluster…
.La création ou la mise à jour des pools de nœuds dans votre cluster d'utilisateur peut prendre un certain temps. Cependant, si le temps d'attente est extrêmement long et que vous soupçonnez un échec, vous pouvez exécuter les commandes suivantes :
- Exécutez la commande
kubectl get nodes
pour connaître l'état des nœuds. - Pour tous les nœuds qui ne sont pas "Ready" (prêts), exécutez la commande
kubectl describe node NODE_NAME
pour obtenir plus de détails.
- Exécutez la commande