Gérer des pools de nœuds dans un cluster

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

  1. Connectez-vous à votre compte Google

    gcloud auth login
    
  2. 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

  1. Dans la console, accédez à la page des clusters Anthos.

    Accéder à la page "Clusters Anthos"

  2. Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.

  3. Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.

  4. Cliquez sur l'onglet Nœuds.

    Une liste de pools de nœuds s'affiche.

Capture d'écran d'une liste de nœuds

gcloud CLI

  1. 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.

  2. 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 et NodePool.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 avec baremetal.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

  1. Dans la console Google Cloud, accédez à la page Clusters d'Anthos.

    Accéder à la page "Clusters Anthos"

  2. Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.

  3. Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.

  4. Cliquez sur Ajouter un pool de nœuds.

  5. Saisissez un nom pour le pool de nœuds.

  6. 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.

  7. Le cas échéant, ajoutez des étiquettes Kubernetes et/ou des rejets Kubernetes.

  8. 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 pour EFFECT: 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

  1. Dans la console, accédez à la page des clusters Anthos.

    Accéder à la page "Clusters Anthos"

  2. Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.

  3. Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.

  4. Cliquez sur l'onglet Nœuds.

  5. Dans la liste, cliquez sur le pool de nœuds à mettre à jour.

  6. Sur la page Détails du pool de nœuds, cliquez sur Modifier.

  7. Modifiez les paramètres si nécessaire, puis cliquez sur Enregistrer.

gcloud CLI

  1. 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.

  2. 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

  1. Dans la console Google Cloud, accédez à la page Clusters d'Anthos.

    Accéder à la page "Clusters Anthos"

  2. Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.

  3. Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.

  4. Cliquez sur l'onglet Nœuds, puis sur le pool de nœuds que vous souhaitez supprimer.

  5. Cliquez sur Supprimer.

  6. 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.