Limites d'association de volumes persistants pour les nœuds GKE

Ce document vous aide à comprendre le fonctionnement des limites d'association de volumes persistants pour les disques persistants et les hyperdisques Compute Engine sur les nœuds Google Kubernetes Engine (GKE). Pour planifier correctement les charges de travail et dimensionner les pools de nœuds, il est essentiel que vous compreniez le nombre maximal de volumes persistants pouvant être associés à un nœud GKE. Si vous souhaitez mieux contrôler la planification des charges de travail, en particulier lorsque vous utilisez plusieurs types de disques avec des limites d'association variables sur une même instance, vous pouvez utiliser une étiquette de nœud pour remplacer les limites d'association par défaut.

Ce document s'adresse aux spécialistes du stockage qui créent et allouent du stockage, ainsi qu'aux administrateurs GKE qui gèrent la planification des charges de travail et la taille des pools de nœuds. 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 l'utilisateur dans GKE Enterprise.

Présentation

Dans GKE, lorsque vous demandez un PersistentVolume (PV) à l'aide du pilote CSI de disque persistant Compute Engine (pd.csi.storage.gke.io), un volume de stockage par blocs est provisionné à partir du service Persistent Disk Google Cloud .

Lorsque vous activez le pilote CSI de disque persistant Compute Engine (PDCSI) sur les clusters GKE, il calcule et signale la limite d'association de volumes persistants par nœud au kubelet. Sur la base de ces informations, le programmeur Kubernetes prend des décisions de programmation pour s'assurer qu'il ne programme pas trop de pods nécessitant des volumes persistants sur un nœud ayant atteint sa capacité d'association. Si le pilote PDCSI a signalé des limites de rattachement inexactes, plus précisément un nombre supérieur à la limite réelle, les pods ne pourront pas être planifiés et resteront bloqués dans un état Pending. Cela peut se produire sur les types de machines de troisième génération, tels que C3, qui ont des limites d'association différentes pour les Hyperdisks et les disques persistants.

Comprendre les limites d'association de volumes persistants

Pour les générations de machines antérieures à la quatrième, l'ensemble de pilotes PDCSI de Compute Engine définit une limite d'association de volumes persistants globale de 128 disques (127 disques de données plus un disque de démarrage) pour tous les types de machines. La limite d'association s'applique à la fois aux volumes Persistent Disk et Hyperdisk combinés. Pour Hyperdisk, la limite d'association est déterminée par le type de machine Compute Engine sous-jacent, le nombre de vCPU de la machine et le type Hyperdisk spécifique.

Exemple :

  • Pour les types de machines de quatrième génération comme C4, le pilote PDCSI indique avec précision à Kubernetes une limite d'association par défaut calculée en fonction du nombre de vCPU du nœud. La limite de pièces jointes signalée se situe généralement entre 8 et 128 volumes persistants.
  • En revanche, pour les types de machines de troisième génération comme C3, le pilote PDCSI signale une limite d'association par défaut à Kubernetes en tant que limite fixe de 128 disques, ce qui peut entraîner l'échec de la planification des pods, car la limite réelle peut être inférieure à 128 en fonction du nombre de processeurs virtuels.

Vous pouvez remplacer la limite d'association par défaut à l'aide d'un libellé de nœud.

Consultez les ressources utiles suivantes dans la documentation Compute Engine :

Ignorer la limite de rattachement de volume persistant par défaut

Si vous avez des exigences spécifiques ou des configurations de nœuds dans lesquelles vous souhaitez associer un nombre spécifique de volumes persistants à vos nœuds, vous pouvez remplacer la limite d'association de volumes persistants par défaut pour un pool de nœuds à l'aide de l'étiquette de nœud suivante : node-restriction.kubernetes.io/gke-volume-attach-limit-override: VALUE.

Vous pouvez utiliser ce libellé de nœud sur les versions de GKE suivantes :

  • 1.32.4-gke.1698000 ou version ultérieure.
  • 1.33.1-gke.1386000 et versions ultérieures.

Nouveau pool de nœuds

Pour créer un pool de nœuds avec une limite d'association de volumes persistants spécifique, exécutez la commande suivante :

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE

Pool de nœuds existant

Pour modifier la limite actuelle de volumes persistants associés d'un pool de nœuds existant, procédez comme suit :

  1. Mettez à jour la limite d'association sur le pool de nœuds :

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
    
  2. Redémarrez le DaemonSet pdcsi-node :

    kubectl rollout restart ds pdcsi-node -n kube-system
    

    La nouvelle limite d'association s'applique une fois que les pods pdcsi-node sont à l'état Running.

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom du pool de nœuds que vous souhaitez créer ou mettre à jour.
  • CLUSTER_NAME : nom du cluster pour le pool de nœuds que vous souhaitez créer ou mettre à jour.
  • VALUE : entier compris entre 0 et 127 pour spécifier le nouveau nombre de volumes persistants pouvant être associés. Si vous spécifiez une valeur supérieure à 127, le libellé de nœud est ignoré et le pilote PDCSI utilise la limite d'association de volume persistant par défaut. La limite par défaut est de 128 pour les machines de troisième génération et d'une valeur basée sur le nombre de vCPU pour les machines de quatrième génération.

Vérifier le remplacement

Pour vérifier si le remplacement a été appliqué correctement, vérifiez les libellés et la capacité des nœuds.

Dans les commandes suivantes, remplacez NODE_NAME par le nom d'un nœud qui fait partie du pool de nœuds spécifique auquel vous avez appliqué le libellé de nœud de remplacement.

  1. Vérifiez les libellés de nœuds :

    kubectl get node NODE_NAME --show-labels
    

    Le résultat doit inclure le libellé node-restriction.kubernetes.io/gke-volume-attach-limit-override.

  2. Vérifiez la capacité du nœud :

    kubectl describe node NODE_NAME
    

    Le résultat doit inclure la capacité attachable-volumes-gce-pd, qui doit correspondre à la valeur de remplacement que vous avez définie pour le pool de nœuds. Pour en savoir plus, consultez Vérifier les ressources pouvant être allouées sur un nœud.

Étapes suivantes