Créer un pool de nœuds

Pour créer un pool de nœuds dans GKE sur AWS, vous devez fournir les ressources suivantes :

  • Le nom d'un cluster AWS existant dans lequel créer le pool de nœuds.
  • Un profil d'instance IAM pour les VM de pool de nœuds.
  • Un sous-réseau dans lequel exécuter les VM du pool de nœuds.

Si vous souhaitez accéder à vos nœuds via SSH, vous pouvez créer une paire de clés EC2.

Créer un pool de nœuds standard

Une fois ces ressources disponibles, vous pouvez créer un pool de nœuds à l'aide de la commande suivante :

gcloud container aws node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --instance-type INSTANCE_TYPE \
    --root-volume-size ROOT_VOLUME_SIZE \
    --iam-instance-profile NODEPOOL_PROFILE \
    --node-version NODE_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --max-pods-per-node MAX_PODS_PER_NODE \
    --location GOOGLE_CLOUD_LOCATION \
    --subnet-id NODEPOOL_SUBNET \
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
    --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom que vous avez choisi pour votre pool de nœuds.
  • CLUSTER_NAME : nom du cluster auquel associer le pool de nœuds.
  • INSTANCE_TYPE : type d'instance de machine AWS souhaité pour ce pool de nœuds (par exemple, m5.large).
  • ROOT_VOLUME_SIZE : taille souhaitée pour le volume racine de chaque nœud, en Go.
  • NODEPOOL_PROFILE : profil d'instance IAM pour les VM de pool de nœuds. Pour savoir comment mettre à jour un profil d'instance IAM, consultez Mettre à jour un profil d'instance AWS IAM.
  • NODE_VERSION : version de Kubernetes à installer sur chaque nœud du pool de nœuds (par exemple, "1.29.3-gke.600")
  • MIN_NODES : nombre minimal de nœuds que le pool de nœuds peut contenir.
  • MAX_NODES : nombre maximal de nœuds que le pool de nœuds peut contenir.
  • MAX_PODS_PER_NODE : nombre maximal de pods pouvant être créés sur un nœud unique du pool.
  • GOOGLE_CLOUD_LOCATION : nom de l'emplacement Google Cloud à partir duquel ce pool de nœuds sera géré.
  • NODEPOOL_SUBNET : ID du sous-réseau sur lequel le pool de nœuds sera exécuté.
    • Il ne doit pas y avoir de chevauchement entre les plages d'adresses IP des pods/services du cluster et le réseau de sous-réseau du pool de nœuds. Pour en savoir plus sur la sélection des plages d'adresses IP des pods et des services pour votre cluster, consultez la page Sélectionner des plages CIDR pour votre cluster.
    • Si ce sous-réseau se trouve en dehors du bloc CIDR principal du VPC, certaines étapes supplémentaires sont nécessaires. Pour en savoir plus, consultez la section Groupes de sécurité.
  • SSH_KEY_PAIR_NAME : nom de la paire de clés SSH AWS créée pour l'accès SSH (facultatif).
  • CONFIG_KMS_KEY_ARN : nom de ressource Amazon (ARN) de la clé KMS AWS qui chiffre les données utilisateur.

S'il est présent, le paramètre --tags applique le tag donné à tous les nœuds de votre pool de nœuds. Cet exemple applique à tous les nœuds du pool des tags contenant les noms du cluster et du pool de nœuds auxquels le nœud appartient.

Pools de nœuds d'instances Spot

GKE sur AWS est compatible avec les pools de nœuds d'instance spot AWS en version preview. Les pools de nœuds d'instances spot sont des pools d'instances spot Amazon EC2 disponibles sur AWS à moindre coût.

Les instances Spot peuvent permettre de réaliser des économies pour les applications sans état, tolérantes aux pannes et flexibles. Toutefois, elles ne sont pas adaptées aux charges de travail rigides, avec état, intolérantes aux pannes ou étroitement couplées entre les nœuds d'instance. Amazon EC2 peut interrompre les instances de spot lorsqu'il a besoin de récupérer la capacité. Elles sont donc soumises aux fluctuations du marché spot. Si vos charges de travail nécessitent une capacité garantie et ne peuvent pas tolérer des périodes de non-disponibilité occasionnelles, choisissez un pool de nœuds standard plutôt qu'un pool de nœuds d'instances Spot.

La stratégie d'allocation utilisée dans GKE sur AWS consiste à sélectionner les pools d'instances spot avec la plus grande disponibilité de capacité, ce qui réduit le risque d'interruption. Cette approche est particulièrement utile pour les charges de travail présentant un coût plus élevé des interruptions, comme le rendu d'images et de contenus multimédias ou le deep learning. Plus précisément, la stratégie d'allocation capacityOptimized a été implémentée, comme décrit dans la section Stratégies d'allocation pour les instances réservées.

Créer un pool de nœuds Spot

Pour créer un pool de nœuds d'instances Spot, exécutez la commande suivante :

gcloud container aws node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --spot-instance-types INSTANCE_TYPE_LIST \
    --root-volume-size ROOT_VOLUME_SIZE \
    --iam-instance-profile NODEPOOL_PROFILE \
    --node-version NODE_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --max-pods-per-node MAX_PODS_PER_NODE \
    --location GOOGLE_CLOUD_LOCATION \
    --subnet-id NODEPOOL_SUBNET \
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
    --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"

Remplacez les éléments suivants :

  • NODE_POOL_NAME : nom que vous souhaitez attribuer à ce pool de nœuds.
  • CLUSTER_NAME : nom du cluster auquel vous souhaitez associer ce pool de nœuds.
  • INSTANCE_TYPE_LIST : liste des types d'instances AWS EC2 séparés par une virgule. Le pool de nœuds provisionne des instances Spot avec ces types d'instances. Les types d'instances doivent avoir la même architecture de processeur, le même nombre de de processeurs et la même quantité de mémoire. Par exemple: "c6g.large,c6gd.large,c6gn.large,c7g.large,t4g.medium". Vous pouvez utiliser l'outil Sélecteur d'instances Amazon EC2 pour rechercher des types d'instances dont les configurations de processeur et de mémoire sont identiques.
  • ROOT_VOLUME_SIZE : taille souhaitée pour le volume racine de chaque nœud, en Go.
  • NODEPOOL_PROFILE : profil d'instance IAM pour les VM de pool de nœuds.
  • NODE_VERSION : version de Kubernetes à installer sur chaque nœud du pool de nœuds (par exemple, "1.29.3-gke.600")
  • MIN_NODES : nombre minimal de nœuds que le pool de nœuds peut contenir.
  • MAX_NODES : nombre maximal de nœuds que le pool de nœuds peut contenir.
  • MAX_PODS_PER_NODE : nombre maximal de pods pouvant être créés sur un nœud unique du pool.
  • GOOGLE_CLOUD_LOCATION : nom de l'emplacement Google Cloud à partir duquel ce pool de nœuds sera géré.
  • NODEPOOL_SUBNET : ID du sous-réseau sur lequel le pool de nœuds sera exécuté.
    • Il ne doit pas y avoir de chevauchement entre les plages d'adresses IP des pods/services du cluster et le réseau de sous-réseau du pool de nœuds. Pour en savoir plus sur la sélection des plages d'adresses IP des pods et des services pour votre cluster, consultez la page Sélectionner des plages CIDR pour votre cluster.
    • Si ce sous-réseau se trouve en dehors du bloc CIDR principal du VPC, certaines étapes supplémentaires sont nécessaires. Pour en savoir plus, consultez la section Groupes de sécurité.
  • SSH_KEY_PAIR_NAME : nom de la paire de clés SSH AWS créée pour l'accès SSH (facultatif).
  • CONFIG_KMS_KEY_ARN : nom de ressource Amazon (ARN) de la clé KMS AWS qui chiffre les données utilisateur.

Il est recommandé de répertorier un certain nombre de types d'instances dans le champ INSTANCE_TYPE_LIST. Cette bonne pratique est importante car si un pool de nœuds est configuré avec un seul type d'instance unique et que celui-ci n'est disponible dans aucune des zones de disponibilité souhaitées, le pool de nœuds ne peut pas provisionner de nouveaux nœuds. Cela peut affecter la disponibilité de vos applications et provoquer des interruptions de service.

Notez que le champ spot-instance-types s'exclut mutuellement du champ instance-type. Cela signifie que vous ne pouvez fournir qu'un seul de ces champs et non les deux.