Configurer le nombre maximal de pods par nœud

Cette page explique comment optimiser les ressources du cluster pour garantir une capacité de planification suffisante pour vos pods en configurant le nombre maximal de pods par nœud dans les clusters standards sur Google Kubernetes Engine (GKE). Cette page vous aide à comprendre comment la relation entre les pods, la taille des blocs CIDR et le nombre de nœuds influence la façon dont GKE planifie les pods et attribue les adresses IP dans votre cluster. Cette page inclut également des informations sur les restrictions et les valeurs par défaut pour le nombre maximal de pods par nœud.

Cette page aide les opérateurs, les architectes cloud, les développeurs et les ingénieurs réseau qui provisionnent et configurent des ressources cloud, déploient des applications et des services, et gèrent la mise en réseau pour leurs déploiements cloud. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le contenu Google Cloud, consultez Rôles utilisateur et tâches courantes de GKE.

Avant de lire cette page, familiarisez-vous avec les cas d'utilisation des clusters GKE Standard au lieu d'Autopilot et avec le modèle de mise en réseau Kubernetes.

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é la gcloud CLI, obtenez la dernière version en exécutant la commande gcloud components update. Il est possible que les versions antérieures de gcloud CLI ne permettent pas d'exécuter les commandes de ce document.

Restrictions

  • Vous ne pouvez configurer le nombre maximal de pods par nœud que dans les clusters de VPC natif.
  • La création de nœuds est limitée par le nombre d'adresses disponibles dans la plage d'adresses allouée aux pods. Consultez le tableau de planification de plages d'adresses IP pour connaître les tailles par défaut, ainsi que les tailles minimales et maximales de la plage d'adresses allouée aux pods. Vous pouvez également ajouter des adresses IP de pods supplémentaires à l'aide d'un CIDR multi-pod non contigu.
  • Chaque cluster doit créer des pods kube-system, tels que kube-proxy, dans l'espace de noms kube-system. Pensez à prendre en compte vos pods de charge de travail et vos pods système lorsque vous réduisez le nombre maximal de pods par nœud. Pour répertorier les pods système dans votre cluster, exécutez la commande suivante :

    kubectl get pods --namespace kube-system
    

Configurer le nombre maximal de pods par nœud

Vous pouvez configurer le nombre maximal de pods par nœud dans un cluster standard lors de la création d'un cluster ou d'un pool de nœuds. Vous ne pouvez pas modifier ce paramètre une fois le cluster ou le pool de nœuds créé. Pour les clusters Autopilot, le nombre maximal de nœuds est préconfiguré et immuable.

Toutefois, si vous n'avez plus d'adresses IP de pod, vous pouvez créer des plages d'adresses IP de pod supplémentaires à l'aide du CIDR multipod non contigugu.

Vous pouvez définir la taille de la plage d'adresses du pod lors de la création d'un cluster à l'aide de la gcloud CLI ou de la console Google Cloud .

gcloud

Pour définir le nombre maximal de pods par nœud en utilisant gcloud CLI, exécutez la commande suivante :

gcloud container clusters create CLUSTER_NAME \
    --enable-ip-alias \
    --cluster-ipv4-cidr=10.0.0.0/21 \
    --services-ipv4-cidr=10.4.0.0/19 \
    --create-subnetwork=name='SUBNET_NAME',range=10.5.32.0/27 \
    --default-max-pods-per-node=MAXIMUM_PODS \
    --location=COMPUTE_LOCATION

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom de votre nouveau cluster
  • SUBNET_NAME : nom du nouveau sous-réseau pour votre cluster.
  • MAXIMUM_PODS : nombre maximal de pods par nœud pour le cluster, pouvant être configuré jusqu'à 256. Si cette valeur est omise, Kubernetes attribue la valeur par défaut 110.
  • COMPUTE_LOCATION : emplacement Compute Engine du nouveau cluster.

Console

  1. Dans la console Google Cloud , accédez à la page Créer un cluster Kubernetes.

    Accéder à la page "Créer un cluster Kubernetes"

  2. Configurez votre nouveau cluster.

  3. Dans le volet de navigation, sous Cluster, cliquez sur Réseau.

  4. Assurez-vous que la case Activer le routage du trafic de VPC natif (utilisation d'une adresse IP d'alias) est cochée.

  5. Dans le volet de navigation, sous Pools de nœuds, cliquez sur Nœuds.

  6. Définissez le champ Nombre maximal de pods par nœud sur 110. GKE exploite cette valeur pour ajuster la taille de la plage d'adresses IP allouée aux nœuds.

  7. Cliquez sur Créer.

Lorsque vous configurez le nombre maximal de pods par nœud pour le cluster, Kubernetes utilise cette valeur pour allouer une plage CIDR aux nœuds. Vous pouvez calculer le nombre maximal de nœuds sur le cluster en fonction de la plage d'adresse IP du cluster pour les pods et de la plage CIDR allouée pour le nœud.

Par exemple, si vous définissez le nombre maximal de pods par défaut sur 110 et la plage d'adresses IP secondaire des pods sur /21, Kubernetes attribue une plage CIDR /24 aux nœuds du nœud. L'attribution de la plage CIDR autorise un maximum de 2(24-21) = 23 = 8 nœuds sur le cluster.

De même, si vous définissez le nombre maximal de pods par défaut sur 8 et la plage d'adresses IP secondaire du cluster pour les pods sur /21, Kubernetes attribue une plage CIDR /28 aux nœuds. L'attribution de la plage CIDR autorise un maximum de 2(28-21) = 27 = 128 nœuds sur le cluster.

Configurer le nombre maximal de pods dans un nouveau pool de nœuds pour un cluster existant

Vous pouvez également spécifier le nombre maximal de pods par nœud lors de la création d'un pool de nœuds dans un cluster standard existant. La création d'un pool de nœuds vous permet d'optimiser l'allocation d'adresses IP, même dans les clusters existants où aucun nombre maximal par défaut de pods par nœud n'est configuré au niveau du cluster.

La définition du nombre maximal de pods au niveau du pool de nœuds remplace la valeur maximale par défaut définie au niveau du cluster. Si vous ne configurez pas de nombre maximal de pods par nœud lorsque vous créez le pool de nœuds, le nombre maximal au niveau du cluster s'applique.

gcloud

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --max-pods-per-node=MAXIMUM_PODS

Remplacez l'élément suivant :

  • POOL_NAME : nom de votre nouveau pool de nœuds.
  • CLUSTER_NAME : nom du cluster dans lequel vous souhaitez créer le pool de nœuds.
  • MAXIMUM_PODS : nombre maximal de nœuds dans le pool de nœuds.

Console

  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 que vous souhaitez modifier.

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

  4. Dans le volet de navigation, cliquez sur Nœuds.

  5. Sous Mise en réseau, saisissez une valeur pour le champ Nombre maximal de pods par nœud. GKE exploite cette valeur pour ajuster la taille de la plage d'adresses IP allouée aux nœuds.

Plages secondaires de pods et nombre maximal de pods par nœud

Lorsque vous configurez le nombre maximal de pods par nœud, vous affectez indirectement la taille requise de la plage secondaire des pods. GKE nécessite un bloc CIDR minimal de /24 par pool de nœuds. Si vous essayez de spécifier une plage secondaire de pods inférieure à /24 lors de la création d'un pool de nœuds, l'erreur suivante s'affiche :

Pod secondary range 'Pod' must have a CIDR block of at least /24

Si vous avez besoin d'une plage inférieure à /24 pour l'ensemble de votre cluster, vous pouvez la spécifier au niveau du cluster à l'aide de l'argument --cluster-ipv4-cidr avec Google Cloud CLI. Pour en savoir plus, consultez Créer un cluster avec une plage CIDR spécifique. Vous pouvez également utiliser le CIDR multipods non contigu pour ajouter d'autres plages d'adresses IP de pods au cluster.

Chaque cluster doit créer des pods kube-system, tels que kube-proxy, dans l'espace de noms kube-system. Pensez à prendre en compte vos pods de charge de travail et vos pods système lorsque vous configurez le nombre maximal de pods par nœud.

À propos du nombre maximal par défaut de pods par nœud

Par défaut, GKE autorise jusqu'à 110 pods par nœud sur les clusters standards, mais les clusters standards peuvent être configurés pour autoriser jusqu'à 256 pods par nœud. Les clusters Autopilot choisissent le nombre maximal de pods par nœud entre 8 et 256, en fonction de la densité attendue en pods de charge de travail. Kubernetes attribue à chaque nœud une plage d'adresses IP, un bloc CIDR, afin que chaque pod puisse avoir une adresse IP unique. La taille du bloc CIDR correspond au nombre maximal de pods par nœud.

Plages CIDR de pods dans les clusters standards

Avec un maximum par défaut de 110 pods par nœud pour les clusters standards, Kubernetes affecte un bloc CIDR /24 (256 adresses) à chacun des nœuds. Avec un nombre d'adresses IP disponibles plus de deux fois supérieur au nombre maximal de pods pouvant être créés sur un nœud, Kubernetes peut réduire la réutilisation des adresses IP lorsque des pods sont ajoutés et supprimés d'un nœud.

Bien que la limite de 256 pods par nœud soit une limite stricte, vous pouvez réduire le nombre de pods sur un nœud. La taille du bloc CIDR attribué à un nœud dépend du nombre maximal de pods par valeur de nœud. Le bloc contient toujours au moins deux fois plus d'adresses que le nombre maximal de pods par nœud.

Le tableau suivant répertorie la taille du bloc CIDR et le nombre correspondant d'adresses IP disponibles que Kubernetes attribue aux nœuds en fonction du nombre maximal de pods par nœud :

Nombre maximal de pods par nœud Plage CIDR par nœud Nombre d'adresses IP
8 /28 16
9 – 16 /27 32
17 – 32 /26 64
33 – 64 /25 128
65-128 /24 256
129 - 256 /23 512

Considérations relatives au dimensionnement du cluster pour la plage d'adresses IP secondaire pour les pods

Lorsque vous créez un cluster, la taille de la plage d'adresses IP secondaire pour les pods est immuable. Vous devez planifier soigneusement la taille de cette plage pour répondre à vos besoins actuels et futurs en termes de charge de travail. Un espace d'adressage IP insuffisant pour les pods peut entraîner des échecs de planification et empêcher la mise à l'échelle de votre cluster.

Si vous n'êtes pas sûr de la taille requise, nous vous recommandons de commencer par une plage plus grande, telle que /21, qui est la valeur par défaut pour les clusters créés avec Google Cloud CLI. Une plage plus étendue fournit suffisamment d'adresses IP pour un cluster de taille moyenne et vous offre de la flexibilité pour la croissance future. Si vous n'avez plus d'adresses IP de pod, vous pouvez utiliser le CIDR multipods non contigu pour ajouter d'autres plages d'adresses IP de pod.

Toutefois, si vous travaillez dans un environnement où l'espace d'adresses IP est limité, vous devrez peut-être utiliser une plage plus petite. Dans ce cas, vous pouvez réduire le nombre maximal de pods par nœud. La réduction du nombre maximal de pods par nœud permet à chaque nœud d'avoir une plage CIDR de pods plus petite, ce qui permet à son tour d'intégrer plus de nœuds dans une plage secondaire de pods plus petite pour l'ensemble du cluster. La configuration est un compromis entre la densité de pods par nœud et le nombre total de nœuds de votre cluster.

Pour calculer le nombre maximal de pods que votre cluster peut accepter, vous devez fournir des valeurs pour le nombre de pods par nœud et les plages CIDR. GKE utilise ces entrées pour déterminer la taille des plages d'adresses de vos nœuds et pods.

Valeurs spécifiées par l'utilisateur

Il s'agit des valeurs que vous fournissez lorsque vous créez un cluster ou un pool de nœuds.

  • Q : nombre maximal de pods par nœud.
    • Pour les clusters Autopilot, Q est fixe (actuellement 32).
    • Pour les clusters standards, vous pouvez configurer Q.
  • DS : longueur du préfixe du sous-réseau du pod. Par exemple, pour une plage CIDR de /17, la longueur du préfixe est 17.
  • S : longueur du préfixe du sous-réseau principal. Par exemple, pour une plage CIDR de /24, la longueur du préfixe est 24.

Valeurs calculées

GKE calcule les valeurs suivantes en fonction de vos entrées.

  • M : taille du masque de réseau pour la plage de pods de chaque nœud. none M = 31 - ⌈log₂(Q)⌉ Utilisez la fonction plafond (⌈ ⌉) pour arrondir à l'entier le plus proche.

  • HM : nombre de bits d'hôte pour le masque de réseau de la plage de pods du nœud. none HM = 32 - M

  • HD : nombre de bits d'hôte pour le masque de réseau du sous-réseau de pod CIDR sélectionné. none HD = 32 - DS

  • MN : nombre maximal de nœuds pouvant être acceptés par le sous-réseau de pods. none MN = 2^(HD - HM)

  • MP : nombre maximal de pods pouvant être acceptés par le sous-réseau de pods. none MP = MN * Q

  • N : nombre d'adresses IP utilisables dans la plage principale. none N = 2^(32-S) - 4

Remarques importantes :

  • Toutes les adresses IP de la plage secondaire peuvent être utilisées pour les pods.
  • Ces calculs fournissent les maximums théoriques. Les performances réelles peuvent être affectées par d'autres facteurs.

Exemple :

Supposons que vous créiez un cluster GKE Autopilot avec les éléments suivants :

  • Un CIDR de sous-réseau de pods de /17 (DS = 17).
  • 32 pods par nœud au maximum (Q = 32).

Calculez le nombre maximal de pods :

  1. M = 31 - ⌈log₂(32)⌉ = 26
  2. HM = 32 - 26 = 6
  3. HD = 32 - 17 = 15
  4. MN = 2(15 - 6) = 512
  5. MP = 512 * 32 = 16,384

Ce cluster peut accepter jusqu'à 512 nœuds et 16 384 pods.

Réduire le nombre maximal de pods.

La réduction du nombre maximal de pods par nœud permet au cluster d'avoir plus de nœuds, car chaque nœud nécessite une plus petite partie de l'espace total alloué aux adresses IP. Vous pouvez également accepter le même nombre de nœuds dans le cluster en spécifiant un espace pour les adresses IP plus petit pour les pods au moment de la création du cluster.

La réduction du nombre maximal de pods par nœud vous permet également de créer des clusters plus petits nécessitant moins d'adresses IP. Par exemple, avec huit pods par nœud, chaque pod reçoit une plage CIDR /28. Ces plages d'adresses IP, ainsi que les plages secondaires et de sous-réseau que vous définissez déterminent le nombre d'adresses IP requis pour créer un cluster.

Vous pouvez configurer le nombre maximal de pods par nœud au moment de la création du cluster et du pool de nœuds.

Étapes suivantes