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 des clusters Anthos sur bare metal doivent appartenir à un pool de nœuds. Dans les clusters Anthos sur bare metal, il existe trois types de pools de nœuds : pools de nœuds de plan de contrôle, pools de nœuds d'équilibreur de charge et pools de nœuds de calcul.
Cette page explique comment vérifier l'état des pools de nœuds de calcul, et comment ajouter et supprimer des pools de nœuds de calcul.
Choisir un outil pour la gestion des pools de nœuds
La façon dont vous gérez les pools de nœuds dépend du type de cluster et du type de cluster, qu'il soit géré par l'API Anthos On-Prem. Un cluster d'utilisateur est géré par l'API Anthos On-Prem si l'une des conditions suivantes est remplie:
Le cluster a été créé dans la console Google Cloud ou à l'aide de Google Cloud CLI (gcloud CLI), qui configure automatiquement l'API Anthos 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 Anthos On-Prem.
Si l'API Anthos On-Prem gère un cluster d'utilisateur, vous pouvez utiliser la console ou gcloud CLI pour gérer les pools de nœuds. Si le cluster d'utilisateur n'est pas géré par l'API Anthos On-Prem, utilisez kubectl
sur le poste de travail administrateur pour gérer les pools de nœuds. Vous utilisez également kubectl
pour gérer les pools de nœuds de 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 gcloud CLI, procédez comme suit sur un ordinateur sur lequel gcloud CLI est installé:
Connectez-vous à 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 des clusters Anthos.
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 beta 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 beta 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 aux 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 Google Cloud, accédez à la page Clusters d'Anthos.
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 beta 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 des étiquettes Kubernetes (paires clé-valeur) séparées par une virgule et appliquées à chaque nœud du pool.--node-taints=KEY=VALUE:EFFECT,...
Liste de rejets Kubernetes appliqués à chaque nœud du pool, séparés par une virgule. 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 valeurs suivantes pourEFFECT
:NoSchedule
,PreferNoSchedule
,NoExecute
.--validate-only
Spécifiez cette option si vous souhaitez valider la création, mais ne rien modifier.
Mettre à jour un pool de nœuds
kubectl
Pour mettre à jour un pool de nœuds, modifiez la ressource nodepools.baremetal.cluster.gke.io
dans le cluster. Vous pouvez mettre à jour la ressource directement à l'aide de kubectl edit
ou du fichier YAML et utiliser kubectl apply
.
Console
Dans la console, accédez à la page des clusters Anthos.
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 à mettre à jour.
Sur la page Détails du pool de nœuds, cliquez sur
Modifier.Modifiez les paramètres si nécessaire, puis cliquez sur Enregistrer.
gcloud CLI
Si vous le souhaitez, répertoriez les pools de nœuds du cluster pour obtenir le nom du pool que vous souhaitez mettre à jour.
gcloud beta 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 suivante :
gcloud beta 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 des étiquettes Kubernetes (paires clé-valeur) séparées par une virgule et appliquées à chaque nœud du pool.--node-taints=KEY=VALUE:EFFECT,...
Liste de rejets Kubernetes appliqués à chaque nœud du pool, séparés par une virgule. 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 valeurs suivantes pour EFFECT:NoSchedule
,PreferNoSchedule
,NoExecute
.--validate-only
Spécifiez cette option si vous souhaitez valider la mise à jour, mais n'apporter aucune modification.
Exemple :
gcloud beta 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 Google Cloud, accédez à la page Clusters d'Anthos.
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 Confirmer.
gcloud CLI
gcloud beta 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.