Ajouter et gérer des pools de nœuds


Cette page explique comment ajouter des pools de nœuds exécutant vos clusters standards Google Kubernetes Engine (GKE), et comment effectuer des opérations sur ceux-ci. Pour en savoir plus sur le fonctionnement des pools de nœuds, consultez la page À propos des pools de nœuds.

Les clusters peuvent effectuer des opérations, telles que le provisionnement automatique des nœuds, sur plusieurs pools de nœuds en parallèle. Vous pouvez créer, mettre à jour ou supprimer manuellement un pool de nœuds alors qu'un autre pool de nœuds est déjà en cours de création, de mise à jour ou de suppression.

Ces instructions ne s'appliquent pas aux clusters Autopilot, dans lesquels GKE gère les nœuds et dans lequel vous n'avez aucun pool de nœuds à gérer. Pour en savoir plus, consultez la présentation d'Autopilot.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

Ajouter un pool de nœuds à un cluster standard

Vous pouvez ajouter un pool de nœuds à un cluster GKE Standard à l'aide de gcloud CLI, de la console Google Cloud ou de Terraform. GKE est également compatible avec le provisionnement automatique des nœuds, qui gère automatiquement les pools de nœuds de votre cluster en fonction des exigences de scaling.

Dans les deux cas, nous vous recommandons de créer et d'utiliser un compte de service IAM (Identity and Access Management) doté de privilèges minimaux pour vos pools de nœuds, plutôt que d'utiliser le compte de service Compute Engine par défaut. Pour savoir comment créer un compte de service doté de privilèges minimaux, consultez la page Renforcer la sécurité d'un cluster.

gcloud

Pour créer un pool de nœuds, exécutez la commande gcloud container node-pools create :

gcloud container node-pools create POOL_NAME \
    --cluster CLUSTER_NAME \
    --service-account SERVICE_ACCOUNT

Remplacez les éléments suivants :

  • POOL_NAME : nom du nouveau pool de nœuds.
  • CLUSTER_NAME : nom de votre cluster existant.
  • SERVICE_ACCOUNT : nom du compte de service IAM à utiliser pour les nœuds. Si cette valeur est omise, le pool de nœuds utilise le compte de service Compute Engine par défaut.
  • Pour provisionner des nœuds via des adresses IP privées, ajoutez l'option --enable-private-nodes. Vous pouvez utiliser cette option dans les clusters publics qui utilisent Private Service Connect. Pour vérifier si votre cluster utilise Private Service Connect, consultez la section Clusters publics avec Private Service Connect.

Pour obtenir la liste complète des options facultatives que vous pouvez spécifier, consultez la documentation sur gcloud container node-pools create.

Le résultat ressemble à ce qui suit :

Creating node pool POOL_NAME...done.
Created [https://container.googleapis.com/v1/projects/PROJECT_ID/zones/us-central1/clusters/CLUSTER_NAME/nodePools/POOL_NAME].
NAME: POOL_NAME
MACHINE_TYPE: e2-medium
DISK_SIZE_GB: 100
NODE_VERSION: 1.21.5-gke.1302

Dans ce résultat, vous voyez des détails sur le pool de nœuds, tels que le type de machine et la version de GKE s'exécutant sur les nœuds.

Il arrive parfois que le pool de nœuds soit créé, mais que la commande gcloud expire au lieu de signaler l'état au serveur. Pour vérifier l'état de tous les pools de nœuds, y compris ceux qui n'ont pas encore été entièrement provisionnés, utilisez la commande suivante :

gcloud container node-pools list --cluster CLUSTER_NAME

Console

Pour ajouter un pool de nœuds à un cluster standard existant, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans la console Google Cloud.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster standard que vous souhaitez modifier.

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

  4. Configurez votre pool de nœuds.

  5. Dans le menu de navigation, cliquez sur Sécurité.

  6. Dans le menu déroulant Compte de service, sélectionnez le compte de service IAM à utiliser pour votre pool de nœuds. Par défaut, le pool de nœuds utilise le compte de service Compute Engine par défaut.

  7. Cliquez sur Créer pour ajouter le pool de nœuds.

Terraform

Pour ajouter un pool de nœuds à un cluster standard existant à l'aide de Terraform, reportez-vous à l'exemple suivant :

resource "google_container_node_pool" "default" {
  name    = "gke-standard-regional-node-pool"
  cluster = google_container_cluster.default.name

  node_config {
    service_account = google_service_account.default.email
  }
}

Pour en savoir plus sur l'utilisation de Terraform, consultez la page Compatibilité de Terraform avec GKE.

Afficher les pools de nœuds d'un cluster standard

gcloud

Pour répertorier tous les pools de nœuds d'un cluster standard, exécutez la commande gcloud container node-pools list :

gcloud container node-pools list --cluster CLUSTER_NAME

Pour afficher des détails sur un pool de nœuds spécifique, exécutez la commande gcloud container node-pools describe :

gcloud container node-pools describe POOL_NAME \
    --cluster CLUSTER_NAME

Remplacez l'élément suivant :

  • CLUSTER_NAME : nom du cluster
  • POOL_NAME : nom du pool de nœuds à afficher

Console

Pour afficher les pools de nœuds d'un cluster standard, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans la console Google Cloud.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster standard.

  3. Cliquez sur l'onglet Nœuds.

  4. Sous Pools de nœuds, cliquez sur le nom du pool de nœuds à afficher.

Effectuer un scaling de pool de nœuds

Vous pouvez effectuer un scaling à la hausse ou à la baisse de vos pools de nœuds pour optimiser les performances et les coûts. Avec les pools de nœuds GKE Standard, vous pouvez :Effectuer un scaling horizontal d'un pool de nœuds en modifiant le nombre de nœuds du pool de nœuds, ou effectuer un scaling vertical d'un pool de nœuds en modifiant la configuration des attributs de machines des nœuds.

Effectuer un scaling horizontal en modifiant le nombre de nœuds

gcloud

Pour redimensionner les pools de nœuds d'un cluster, exécutez la commande gcloud container clusters resize :

gcloud container clusters resize CLUSTER_NAME \
    --node-pool POOL_NAME \
    --num-nodes NUM_NODES

Remplacez l'élément suivant :

  • CLUSTER_NAME : nom du cluster à redimensionner.
  • POOL_NAME : nom du pool de nœuds à redimensionner.
  • NUM_NODES : nombre de nœuds du pool dans un cluster zonal. Si vous utilisez des clusters multizones ou régionaux, NUM_NODES est le nombre de nœuds pour chaque zone dans laquelle se trouve le pool de nœuds.

Répétez cette commande pour chaque pool de nœuds. Si votre cluster ne comporte qu'un seul pool de nœuds, omettez l'indicateur --node-pool.

Console

Pour redimensionner les pools de nœuds d'un cluster, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans la console Google Cloud.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster standard que vous souhaitez modifier.

  3. Cliquez sur l'onglet Nœuds.

  4. Dans la section Pools de nœuds, cliquez sur le nom du pool de nœuds que vous souhaitez redimensionner.

  5. Cliquez sur Redimensionner.

  6. Dans le champ Nombre de nœuds, saisissez le nombre de nœuds que vous souhaitez inclure dans le pool de nœuds, puis cliquez sur Redimensionner.

  7. Répétez cette procédure pour chaque pool de nœuds s'il y a lieu.

Effectuer un scaling vertical en modifiant les attributs de machine des nœuds

Vous pouvez modifier le type de machine, le type et la taille du disque configurés du pool de nœuds.

Lorsque vous modifiez un ou plusieurs de ces attributs de machine, GKE met à jour les nœuds vers la nouvelle configuration à l'aide de la règle de mise à niveau configurée pour le pool de nœuds. Si vous configurez la règle de mise à niveau bleu-vert, vous pouvez migrer les charges de travail des nœuds d'origine vers les nouveaux nœuds tout en ayant la possibilité d'effectuer un rollback des nœuds d'origine si la migration échoue. Inspectez les paramètres de mise à niveau du pool de nœuds pour vous assurer que la règle configurée correspond à la manière dont vous souhaitez mettre à jour les nœuds.

Mettez à jour au moins un des attributs de machine en surbrillance dans la commande suivante :

gcloud container node-pools update POOL_NAME \
    --cluster CLUSTER_NAME \
    --machine-type MACHINE_TYPE \
    --disk-type DISK_TYPE \
    --disk-size DISK_SIZE

Ignorez les options d'attributs de machine que vous ne souhaitez pas modifier. Cependant, vous devez utiliser au moins une option d'attribut de machine, sinon la commande échouera.

Remplacez les éléments suivants :

  • POOL_NAME : nom du pool de nœuds à redimensionner.
  • CLUSTER_NAME : nom du cluster à redimensionner.
  • MACHINE_TYPE : type de machine à utiliser pour les nœuds. Pour en savoir plus, consultez la commande gcloud container node-pools update.
  • DISK_TYPE : le type de disque de démarrage de la VM de nœud doit être l'un des suivants : pd-standard, pd-ssd, pd-balanced.
  • DISK_SIZE : taille des disques de démarrage des VM de nœud en Go La valeur par défaut est 100 Go.

Mettre à niveau un pool de nœuds

Par défaut, la mise à niveau automatique est activée sur les nœuds d'un cluster. Nous vous recommandons de ne pas la désactiver. Les mises à niveau automatiques des nœuds garantissent que le plan de contrôle et la version des nœuds de votre cluster restent synchronisés et conformes aux règles d'asymétrie de version Kubernetes, ce qui garantit que les plans de contrôle sont compatibles avec les nœuds jusqu'à deux versions mineures antérieures au plan de contrôle. Par exemple, les plans de contrôle Kubernetes 1.29 sont compatibles avec les nœuds Kubernetes 1.27.

Avec les mises à niveau du pool de nœuds GKE, vous pouvez choisir entre deux stratégies de mise à niveau configurables, à savoir les mises à niveau de la surutilisation et les mises à niveau bleu-vert.

Choisissez une stratégie et utilisez les paramètres pour ajuster la stratégie afin de répondre au mieux aux besoins de votre environnement de cluster.

Lorsqu'un nœud est mis à jour, GKE interrompt la programmation de nouveaux pods et tente de programmer les pods en cours d'exécution sur d'autres nœuds. Cette opération est semblable à d'autres événements permettant de recréer le nœud, tels que l'activation ou la désactivation d'une fonctionnalité dans le pool de nœuds.

La mise à jour n'est terminée que lorsque tous les nœuds ont été recréés et que le cluster est dans l'état souhaité. Lorsqu'un nœud qui vient d'être mis à niveau s'enregistre auprès du plan de contrôle, GKE le marque comme programmable.

Les nouvelles instances de nœud exécutent la version souhaitée de Kubernetes, ainsi que les composants suivants :

Mettre à niveau manuellement un pool de nœuds

Vous pouvez mettre à niveau manuellement une version du pool de nœuds vers celle du plan de contrôle ou vers une version antérieure qui est toujours disponible et compatible avec le plan de contrôle. Vous pouvez mettre à niveau manuellement plusieurs pools de nœuds en parallèle, tandis que GKE ne met à niveau automatiquement qu'un seul pool de nœuds à la fois.

Lorsque vous mettez à niveau manuellement un pool de nœuds, GKE supprime les libellés que vous avez ajoutés à des nœuds individuels à l'aide de kubectl. Pour éviter cela, essayez plutôt d'appliquer des libellés aux pools de nœuds.

Vous pouvez mettre à jour manuellement vos pools de nœuds vers une version compatible avec le plan de contrôle à l'aide de la console Google Cloud ou de la Google Cloud CLI.

gcloud

Les variables suivantes sont utilisées dans les commandes de cette section :

  • CLUSTER_NAME : nom du cluster du pool de nœuds à mettre à jour.
  • NODE_POOL_NAME : nom du pool de nœuds à mettre à jour.
  • VERSION : version de Kubernetes vers laquelle les nœuds sont mis à niveau. Par exemple, --cluster-version=1.7.2 ou cluster-version=latest.

Mettre à niveau un pool de nœuds :

gcloud container clusters upgrade CLUSTER_NAME \
  --node-pool=NODE_POOL_NAME

Pour spécifier une autre version de GKE sur les nœuds, utilisez l'indicateur --cluster-version facultatif :

gcloud container clusters upgrade CLUSTER_NAME \
  --node-pool=NODE_POOL_NAME \
  --cluster-version VERSION

Pour en savoir plus sur la spécification des versions, consultez la page Gestion des versions.

Pour en savoir plus, consultez la documentation sur gcloud container clusters upgrade.

Console

Pour mettre à niveau un pool de nœuds à l'aide de la console Google Cloud, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans la console Google Cloud.

    Accéder à Google Kubernetes Engine

  2. À côté du cluster que vous souhaitez modifier, cliquez sur Actions, puis sur Modifier.

  3. Sur la page Détails du cluster, cliquez sur l'onglet Nœuds.

  4. Dans la section Pools de nœuds, cliquez sur le nom du pool de nœuds que vous souhaitez mettre à niveau.

  5. Cliquez sur Modifier.

  6. Cliquez sur Modifier sous Version du nœud.

  7. Sélectionnez la version souhaitée dans la liste déroulante Version du nœud, puis cliquez sur Modifier.

Déployer un pod sur un pool de nœuds spécifique

Vous pouvez déployer explicitement un pod sur un pool de nœuds spécifique en utilisant un sélecteur de nœuds (nodeSelector) dans le fichier manifeste de votre pod. nodeSelector planifie les pods sur les nœuds avec un libellé correspondant.

Tous les pools de nœuds GKE possèdent des libellés au format suivant : cloud.google.com/gke-nodepool: POOL_NAME. Ajoutez ce libellé au champ nodeSelector de votre pod, comme illustré dans l'exemple suivant :

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    cloud.google.com/gke-nodepool: POOL_NAME

Pour plus d'informations, consultez l'article Affecter des pods à des nœuds.

Au lieu du sélecteur de nœud, vous pouvez utiliser l'affinité de nœuds. Utilisez l'affinité de nœuds si vous souhaitez une règle "douce" dans laquelle le pod tente de respecter la contrainte, mais est toujours planifiée, même si la contrainte ne peut pas être remplie. Pour plus d'informations, consultez la section Affinité de nœud. Vous pouvez également spécifier des requêtes de ressources pour les conteneurs.

Revenir à une version antérieure d'un pool de nœuds

Vous pouvez revenir à une version antérieure d'un pool de nœuds, par exemple pour récupérer de l'échec d'une mise à niveau du pool de nœuds. Consultez les limites avant de revenir à une version antérieure d'un pool de nœuds.

  1. Définissez une exclusion de maintenance pour le cluster afin d'empêcher la mise à niveau automatique du pool de nœuds par GKE après son retour à une version antérieure.
  2. Pour revenir à une version antérieure d'un pool de nœuds, spécifiez une version antérieure en suivant les instructions de la section Mettre à jour manuellement un pool de nœuds.

Supprimer un pool de nœuds

La suppression d'un pool de nœuds supprime aussi bien les nœuds que les charges de travail en cours d'exécution, quel que soit le paramètre PodDisruptionBudget. Pour en savoir plus sur la manière dont cela affecte vos charges de travail, y compris les interactions avec les sélecteurs de nœuds, consultez la page Supprimer des pools de nœuds.

gcloud

Pour supprimer un pool de nœuds, exécutez la commande gcloud container node-pools delete :

gcloud container node-pools delete POOL_NAME \
    --cluster CLUSTER_NAME

Console

Pour supprimer un pool de nœuds, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans la console Google Cloud.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster standard que vous souhaitez modifier.

  3. Cliquez sur l'onglet Nœuds.

  4. Dans la section Pools de nœuds, cliquez sur le bouton situé à côté du pool de nœuds à supprimer.

  5. Lorsque vous êtes invité à confirmer votre choix, cliquez sur Supprimer.

Résoudre les problèmes

Pour obtenir des informations de dépannage, consultez les pages Résoudre les problèmes liés aux pools de nœuds Standard et Résoudre les problèmes d'enregistrement des nœuds.

Étapes suivantes