Un pool de nœuds est un groupe de nœuds au sein d'un cluster qui possèdent tous la même configuration. Tous les nœuds de votre cluster doivent appartenir à un pool de nœuds. Il existe trois types de pools de nœuds dans un cluster Google Distributed Cloud: le plan de contrôle, l'équilibreur de charge et les pools de nœuds de calcul.
Cette page explique comment vérifier l'état des pools de nœuds de calcul et comment ajouter, mettre à jour et supprimer des pools de nœuds de calcul.
Choisir un outil pour la gestion des pools de nœuds
La manière dont vous gérez les pools de nœuds dépend du type de cluster et, pour les clusters d'utilisateur, de savoir si le cluster est géré par l'API GKE On-Prem. 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
bmctl
, 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 kubectl
sur le poste de travail administrateur pour gérer les pools de nœuds. Vous pouvez également utiliser kubectl
pour gérer les pools de nœuds pour tous les types de clusters pouvant contenir des pools de nœuds de calcul (clusters hybrides, autonomes et d'utilisateur).
Si vous prévoyez d'utiliser la gcloud CLI, procédez comme suit sur un ordinateur sur lequel la gcloud CLI est installée:
Connectez-vous à l'aide de votre compte Google
gcloud auth login
Mettez à jour les composants :
gcloud components update
Vérifier l'état du nœud
Avant d'ajouter ou de supprimer des pools de nœuds, vérifiez l'état des nœuds et de leurs pools respectifs.
kubectl
Avec kubectl
, vous pouvez obtenir l'état des nœuds d'un espace de noms spécifique ou de l'ensemble du cluster. L'exemple suivant montre l'état des pools de nœuds dans l'espace de noms cluster-abm-cluster
du cluster :
kubectl get nodepools.baremetal.cluster.gke.io -n cluster-abm-cluster
Le système renvoie des résultats semblables à ceux-ci :
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN
abm-cluster 3 0 0 0 0
default-pool 2 0 0 0 0
backup-pool 3 0 0 0 0
Chaque colonne du tableau indique les différents états dans lesquels un nœud peut se trouver. Chaque ligne du tableau correspond au nombre de nœuds par pool dans chacun des états de nœud.
Lorsque vous ajoutez un nœud, il est initialement dans l'état Reconciling
durant son provisionnement. Une fois le nœud intégré au cluster, son état passe à Ready
.
Vous pouvez également vérifier l'état des nœuds du cluster en exécutant la commande suivante :
kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG
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.
Une liste de pools de nœuds s'affiche.
gcloud CLI
Répertoriez les pools de nœuds du cluster:
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Remplacez les éléments suivants :
USER_CLUSTER_NAME
: nom du cluster d'utilisateur contenant les pools de nœuds.FLEET_HOST_PROJECT_ID
: ID du projet dans lequel le cluster a été créé.LOCATION
: emplacement Google Cloud associé au cluster d'utilisateur.
Décrivez un pool de nœuds:
gcloud container bare-metal node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Remplacez
NODE_POOL_NAME
par le nom du pool de nœuds.
Si vous avez besoin d'informations supplémentaires sur le diagnostic de vos clusters, consultez la page Créer des instantanés pour diagnostiquer les clusters.
Ajouter un pool de nœuds
kubectl
Tenez compte des règles suivantes lorsque vous ajoutez un pool de nœuds à un cluster :
Un cluster d'administrateur peut contenir un pool de nœuds d'équilibreur de charge et un pool de nœuds de plan de contrôle, mais il ne peut pas contenir de pool de nœuds de calcul. Toute tentative d'ajout d'un pool de nœuds de calcul à un cluster d'administrateur génère une erreur.
Un cluster ne peut contenir qu'un seul pool de nœuds de plan de contrôle et un seul pool de nœuds d'équilibreur de charge. Vous ne pouvez pas ajouter d'autres pools de nœuds de plan de contrôle ou d'équilibreur de charge à un cluster.
Pour ajouter des pools de nœuds à un cluster, vous devez créer une ressource nodepools.baremetal.cluster.gke.io
dans le cluster. Dans l'exemple suivant, un nouveau pool de nœuds nommé "machine-learning-pool" est ajouté au fichier manifeste. Le nouveau pool de nœuds se compose de deux nœuds ayant les adresses IP 10.200.0.7
et 10.200.0.8
:
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: machine-learning-pool
namespace: cluster-abm-cluster
spec:
clusterName: abm-cluster
nodes:
- address: 10.200.0.7
- address: 10.200.0.8
taints:
- key: TAINT_KEY
value: TAINT_VALUE
effect: NoSchedule
labels:
key1: LABEL_1
key2: LABEL_2
Stockez la configuration dans un fichier nommé machine-learning-pool.yaml
et appliquez-la au cluster à l'aide de la commande suivante :
kubectl apply -f machine-learning-pool.yaml
Les points suivants doivent être pris en compte lors de l'ajout d'un pool de nœuds à un cluster :
Les configurations
NodePool.spec.taints
etNodePool.spec.labels
sont rapprochées avec les nœuds. Tous les rejets et étiquettes ajoutés directement aux nœuds sont supprimés. Le plan de contrôle ne supprime pas les rejets et les étiquettes que vous ajoutez directement lors du processus de synchronisation. Pour contourner cette étape du rapprochement, vous pouvez annoter le nœud avecbaremetal.cluster.gke.io/label-taint-no-sync
.La ressource de pool de nœuds doit être créée dans le même espace de noms que le cluster associé et elle doit référencer le nom du cluster dans le champ
spec.clusterName
.
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.Saisissez un nom pour le pool de nœuds.
Dans le champ Adresse des nœuds 1, saisissez l'adresse IP de la machine de nœud de calcul.
Si vous avez plusieurs machines de nœud de calcul à ajouter, cliquez sur
Ajouter une adresse.Le cas échéant, ajoutez des étiquettes Kubernetes et/ou des rejets Kubernetes.
Cliquez sur Créer.
L'état du pool de nœuds s'affiche dans l'onglet Nœuds. Vous devrez peut-être actualiser la page pour afficher un état mis à jour.
gcloud CLI
gcloud container bare-metal node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_POOL_CONFIG
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.FLEET_HOST_PROJECT_ID
: ID du projet dans lequel le cluster a été créé.LOCATION
: emplacement Google Cloud que vous avez spécifié lors de la création du cluster.NODE_POOL_CONFIG
: chemin d'accès à un fichier de configuration décrivant le pool de nœuds. Exemple :nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 key2: value2 - nodeIP: 10.200.0.11 labels: key3: value3 key4: value4
Vous pouvez également spécifier les éléments suivants :
--node-labels=KEY=VALUE,...
: liste d'étiquettes Kubernetes (paires clé/valeur) séparées par des virgules appliquées à chaque nœud du pool.--node-taints=KEY=VALUE:EFFECT,...
Liste de rejets Kubernetes séparés par une virgule
à chaque nœud du pool. Les rejets sont des paires clé/valeur associées à un effet. Les rejets sont utilisés avec les tolérances pour la planification des pods. Spécifiez l'une des options suivantes pour EFFECT
: NoSchedule
, PreferNoSchedule
ou NoExecute
.
--validate-only
Spécifiez cette option si vous souhaitez valider la mise à jour sans la modifier.
Mettre à jour un pool de nœuds
kubectl
Vous mettez à jour un pool de nœuds en modifiant la ressource nodepools.baremetal.cluster.gke.io
dans le cluster. Vous pouvez mettre à jour la ressource directement à l'aide de kubectl edit
, ou mettre à jour le fichier YAML et utiliser kubectl apply
.
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.
Dans la liste, cliquez sur le pool de nœuds que vous souhaitez mettre à jour.
Sur la page Détails du pool de nœuds, cliquez sur
Modifier.Modifiez les paramètres selon vos besoins, puis cliquez sur Enregistrer.
gcloud CLI
Vous pouvez également répertorier les pools de nœuds du cluster pour obtenir le nom du pool de nœuds que vous souhaitez mettre à jour.
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Remplacez les éléments suivants :
USER_CLUSTER_NAME
: nom du cluster d'utilisateur contenant les pools de nœuds.FLEET_HOST_PROJECT_ID
: ID du projet dans lequel le cluster a été créé.LOCATION
: emplacement Google Cloud associé au cluster d'utilisateur.
Exécutez la commande ci-dessous.
gcloud container bare-metal node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_CONFIG_FILE
Remplacez les éléments suivants :
NODE_POOL_NAME
par le nom du pool de nœuds.NODE_CONFIG_FILE
: chemin d'accès à un fichier de configuration décrivant le pool de nœuds. Exemple :
nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 - nodeIP: 10.200.0.11
Vous pouvez également spécifier les éléments suivants :
--node-labels=KEY=VALUE,...
: liste d'étiquettes Kubernetes (paires clé/valeur) séparées par des virgules appliquées à chaque nœud du pool.--node-taints=KEY=VALUE:EFFECT,...
Liste de rejets Kubernetes séparés par une virgule et appliqués à chaque nœud du pool. Les rejets sont des paires clé/valeur associées à un effet. Les rejets sont utilisés avec les tolérances pour la planification des pods. Spécifiez l'une des options suivantes pour EFFECT:NoSchedule
,PreferNoSchedule
ouNoExecute
.--validate-only
Spécifiez cette option si vous souhaitez valider la mise à jour sans la modifier.
Exemple :
gcloud container bare-metal node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --node-configs-from-file=node-pool-config.yaml \ --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
Supprimer un pool de nœuds
kubectl
Vous supprimez les pools de nœuds avec kubectl delete
. Par exemple, pour supprimer le pool de nœuds ajouté à la section précédente, machine-learning-pool
, utilisez la commande suivante :
kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster
N'oubliez pas que les pools de nœuds de plan de contrôle et d'équilibreur de charge sont essentiels au bon fonctionnement d'un cluster et ne peuvent donc pas être supprimés d'un 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, puis sur le pool de nœuds que vous souhaitez supprimer.
Cliquez sur
Supprimer.Dans la boîte de dialogue de confirmation, saisissez le nom du pool de nœuds, puis cliquez sur Confirm (Confirmer).
gcloud CLI
gcloud container bare-metal 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
par le nom du pool de nœuds.USER_CLUSTER_NAME
: nom du cluster d'utilisateur contenant les pools de nœuds.FLEET_HOST_PROJECT_ID
: ID du projet dans lequel le cluster a été créé.LOCATION
: emplacement Google Cloud associé au cluster d'utilisateur.
La suppression d'un pool de nœuds de calcul dans un cluster peut provoquer l'interruption des pods. Si un PodDisruptionBudget (PDB) est en place, il se peut que vous ne puissiez pas supprimer un pool de nœuds. Pour en savoir plus sur les règles d'interruption des pods, consultez la section Supprimer des nœuds bloqués par le budget d'interruption de pod.
Étapes suivantes
Si vos exigences liées aux charges de travail changent après la création des pools de nœuds, vous pouvez mettre à jour un pool de nœuds de calcul pour ajouter ou supprimer des nœuds. Pour ajouter des nœuds à un pool de nœuds de calcul ou en supprimer, consultez la section Ajouter ou supprimer des nœuds dans un cluster.