À propos des pools de nœuds


Vous trouverez sur cette page des informations sur le fonctionnement des pools de nœuds dans Google Kubernetes Engine (GKE).

Pour savoir comment gérer les pools de nœuds, consultez la page Ajouter et gérer des pools de nœuds.

Présentation

Un pool de nœuds est un groupe de nœuds au sein d'un cluster qui possèdent tous la même configuration. Les pools de nœuds utilisent une spécification NodeConfig. Chaque nœud du pool possède un libellé de nœud Kubernetes, cloud.google.com/gke-nodepool, qui a pour valeur le nom du pool.

Lorsque vous créez un cluster, le nombre et le type de nœuds que vous spécifiez sont utilisés pour créer le premier pool de nœuds du cluster. Ensuite, vous pouvez ajouter à votre cluster d'autres pools de nœuds personnalisés de tailles et de types différents. Tous les nœuds d'un pool donné sont identiques les uns aux autres.

Par exemple, vous pouvez créer un pool de nœuds dans votre cluster avec des disques SSD locaux, une configuration minimale pour la plate-forme du processeur et des Spot VM, une image de nœud spécifique, différents types de machines ou une interface de réseau virtuel plus efficace.

Les pools de nœuds personnalisés sont utiles lorsque vous devez planifier des pods nécessitant plus de ressources que d'autres, par exemple plus de mémoire ou plus d'espace disque local. Si vous avez besoin de davantage de contrôle sur l'emplacement des pods, vous pouvez utiliser des rejets de nœuds.

Vous pouvez créer, mettre à niveau et supprimer des pools de nœuds individuellement sans affecter l'ensemble du cluster. Vous ne pouvez pas configurer un seul nœud dans un pool de nœuds : toute modification de la configuration affecte tous les nœuds du pool de nœuds.

Vous pouvez redimensionner des pools de nœuds dans un cluster en ajoutant ou en supprimant des nœuds.

Par défaut, tous les nouveaux pools de nœuds exécutent la même version de Kubernetes que le plan de contrôle. Les pools de nœuds existants peuvent être mis à jour manuellement ou automatiquement. Vous pouvez également exécuter des versions différentes de nœuds Kubernetes dans chaque pool de nœuds de votre cluster, mettre à jour chaque pool de manière indépendante, et cibler différents pools de nœuds pour des déploiements spécifiques.

Déployer des services sur des pools de nœuds spécifiques

Lorsque vous définissez un service, vous pouvez contrôler indirectement le pool de nœuds dans lequel il est déployé. Le pool de nœuds ne dépend pas de la configuration du service, mais de la configuration des pods.

  • Vous pouvez déployer explicitement un pod sur un pool de nœuds spécifique en définissant un sélecteur de nœuds (nodeSelector) dans le fichier manifeste du pod. Cela oblige un pod à ne s'exécuter que sur les nœuds de ce pool de nœuds. Vous pouvez consulter un exemple dans la section décrivant le déploiement d'un pod sur un pool de nœuds spécifique.

  • Vous pouvez spécifier des requêtes de ressources pour les conteneurs. Le pod ne s'exécute que sur les nœuds qui répondent aux requêtes de ressources. Par exemple, si la définition de pod inclut un conteneur qui nécessite quatre processeurs, le service ne sélectionnera pas les pods s'exécutant sur des nœuds avec deux processeurs.

Nœuds dans des clusters multizones ou régionaux

Si vous avez créé un cluster multizones ou régional, tous les pools de nœuds sont automatiquement répliqués sur ces zones. Les nouveaux pools de nœuds sont automatiquement créés dans ces zones. De la même manière, toute suppression s'applique également aux pools de nœuds des zones supplémentaires.

Notez que cet effet de multiplication peut vous conduire à consommer une portion plus importante du quota de votre projet pour une région spécifique lorsque vous créez des pools de nœuds.

Supprimer des pools de nœuds

Lorsque vous supprimez un pool de nœuds, GKE draine tous les nœuds du pool de nœuds, en supprimant et en reprogrammant tous les pods. Le processus de drainage implique que GKE supprime les pods sur chaque nœud du pool de nœuds. Chaque nœud d'un pool de nœuds est drainé en supprimant les pods avec un délai de grâce attribué de MAX_POD. MAX_POD est la valeur maximale terminationGracePeriodSeconds définie sur les pods programmés sur le nœud avec une limite d'une heure. Les paramètres PodDisruptionBudget ne sont pas respectés lors de la suppression du pool de nœuds.

Si les pods présentent des sélecteurs de nœuds spécifiques, ils peuvent rester dans un état non planifiable si aucun autre nœud du cluster ne répond aux critères spécifiés.

Toutefois, lorsqu'un cluster est supprimé, GKE ne suit pas ce processus visant à arrêter progressivement les nœuds en les drainant. Si les charges de travail exécutées sur un cluster doivent être arrêtées progressivement, utilisez kubectl drain pour nettoyer les charges de travail avant de supprimer le cluster.

Pour supprimer un pool de nœuds, consultez la page Supprimer un pool de nœuds.

Étapes suivantes