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 en savoir plus sur la mise à jour d'un profil d'instance IAM, consultez la section Mettre à jour le profil d'instance IAM AWS.
  • 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éseaux 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'instances ponctuelles AWS en tant que fonctionnalité 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 permettent 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 fortement couplées entre les nœuds d'instance. Les instances Spot peuvent être interrompues par Amazon EC2 lorsqu'EC2 a besoin de récupérer de 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 d'indisponibilité occasionnelles, choisissez un pool de nœuds standard au lieu d'un pool de nœuds d'instance ponctuel.

La stratégie d'allocation employée dans GKE sur AWS se concentre sur la sélection de pools d'instances Spot offrant la plus haute disponibilité en capacité, ce qui réduit le risque d'interruption. Cette approche est particulièrement utile pour les charges de travail dont le coût d'interruption est plus élevé, telles que le rendu d'images et de médias ou le deep learning. Plus précisément, la stratégie d'allocation capacityOptimized a été mise en œuvre, comme décrit dans la section Stratégies d'allocation pour les instances Spot.

Créer un pool de nœuds Spot

Pour créer un pool de nœuds d'instance 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 processeurs et la même quantité de mémoire. 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 ayant des configurations de processeur et de mémoire 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éseaux 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 plusieurs types d'instances dans le champ INSTANCE_TYPE_LIST. Cette bonne pratique est importante, car si un pool de nœuds n'est configuré qu'avec un seul type d'instance et que ce type d'instance 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 et le champ instance-type s'excluent mutuellement. Cela signifie que vous ne pouvez fournir qu'un seul de ces champs, mais pas les deux.