Cette page explique comment créer un cluster et un pool de nœuds qui utilisent des instances dédiées ou des hôtes dédiés AWS. Les hôtes et les instances dédiés vous sont réservés pour votre utilisation et ne sont pas partagés avec d'autres clients AWS. Le paramètre des hôtes et des instances dédiés est appelé location.
Avant de commencer
Pour utiliser des instances ou des hôtes dédiés avec GKE sur AWS, vous devez créer une version de cluster 1.22.8-gke.200 ou ultérieure. Vous ne pouvez pas mettre à niveau un cluster existant et ajouter des hôtes dédiés.
Configuration requise pour les clusters
Avant de créer un cluster, vous devez remplir les conditions préalables. Vous devez notamment fournir les ressources suivantes :
- Un VPC AWS sur lequel le cluster sera exécuté.
- Jusqu'à trois sous-réseaux AWS pour les trois instances dupliquées du plan de contrôle. Chaque zone doit se trouver dans une zone de disponibilité AWS différente.
- Le rôle IAM AWS que GKE sur AWS assume lors de la gestion de votre cluster. Cela nécessite un ensemble spécifique d'autorisations IAM.
- Clés CMK symétriques KMS pour le chiffrement au repos des données de cluster (etcd) et de la configuration.
- Profil d'instance AWS IAM pour chaque instance dupliquée du plan de contrôle. Cela nécessite un ensemble spécifique d'autorisations IAM.
- Une paire de clés SSH EC2 (facultatif) si vous avez besoin d'un accès SSH aux instances EC2 qui exécutent chaque instance dupliquée du plan de contrôle.
Il vous incombe de créer et de gérer ces ressources, qui peuvent être partagées entre tous vos clusters Anthos. Toutes les autres ressources AWS sous-jacentes à l'échelle d'un cluster sont gérées par GKE sur AWS.
Ces instructions utilisent l'API GKE Multi-Cloud pour créer un cluster et un pool de nœuds. Pour utiliser l'API GKE Multi-Cloud, vous devez connaître les API Google Cloud.
Hôtes dédiés et instances dédiées
Lorsque vous créez un cluster ou un pool de nœuds, vous disposez de l'une des options suivantes :
DEFAULT
: lancer des instances avec la location par défaut de votre VPCDEDICATED
: lancer des instances sur une instance dédiéeHOST
: lancer des instances sur un hôte dédié
Avant de créer un cluster ou un pool de nœuds, choisissez l'option qui vous convient le mieux.
Pour en savoir plus, consultez les pages Configurer la location d'une instance avec une configuration de lancement, instances dédiées et hôtes dédiés dans la documentation AWS.
Combiner les paramètres de location dans un cluster
Vous pouvez configurer les paramètres de location individuellement pour chaque plan de contrôle et chaque pool de nœuds. Par exemple, vous pouvez créer un cluster avec le plan de contrôle sur les hôtes partagés, un pool de nœuds sur des hôtes dédiés et un autre pool de nœuds sur des hôtes partagés.
Allouer des hôtes dédiés
Avant de créer un cluster avec des hôtes dédiés, vous devez allouer les hôtes pour toutes les instances dont votre cluster a besoin. Les hôtes doivent présenter les attributs suivants :
- Utiliser les mêmes familles d'instances que celles dont vos ressources de cluster ont besoin
- Alloué dans les mêmes zones que celles où vous prévoyez de créer des clusters
- Activer le placement automatique
- Vous disposez d'un quota suffisant pour lancer des hôtes dédiés
Pour en savoir plus sur l'allocation d'hôtes dédiés, consultez la page Premiers pas avec des hôtes dédiés.
Limites
Cette section répertorie les limites de la compatibilité des hôtes dédiés dans GKE sur AWS.
Pools de nœuds
Vous ne pouvez pas mettre à jour le paramètre de location d'un pool de nœuds. Pour déplacer des charges de travail sur des instances disposant d'un autre paramètre de location, créez un pool de nœuds avec la location souhaitée et supprimez le pool existant.
Familles d'instances compatibles
GKE sur AWS est compatible avec les hôtes dédiés des familles d'instance suivantes.
- t3
- m5
- m5d
- c5
- c5d
- r5
- r5d
- i3en
Les autres familles d'instances ne sont pas acceptées.
Types de nœuds
Seuls les pools de nœuds Linux sont acceptés.
Créer un cluster
Vous pouvez créer un cluster compatible avec les hôtes dédiés avec la méthode projects.locations.awsClusters.create avec l'API GKE Multi-Cloud. Pour créer un cluster, procédez comme suit :
gcloud
L'exemple suivant crée un cluster avec des hôtes dédiés.Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- CLUSTER_NAME : nom de cluster choisi.
- GOOGLE_CLOUD_LOCATION : région Google Cloud compatible qui gère votre cluster, par exemple
us-west1
- AWS_REGION : région AWS dans laquelle créer le cluster.
- API_ROLE_ARN : nom ARN (Amazon Resource Name) du rôle de l'API GKE Multi-Cloud.
- CONFIG_KMS_KEY_ARN : nom ARN (Amazon Resource Name) de la clé KMS AWS servant à chiffrer les données utilisateur.
- DB_KMS_KEY_ARN : nom ARN (Amazon Resource Name) de la clé KMS AWS servant à chiffrer les secrets du cluster.
- CONTROL_PLANE_PROFILE : profil de l'instance IAM associée au cluster.
- CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2 et CONTROL_PLANE_SUBNET_3 par les ID de sous-réseau des trois instances de plan de contrôle du cluster.
- TENANCY_TYPE : paramètre de location du plan de contrôle.
Il peut s'agir de
DEFAULT
,DEDICATED
ouHOST
. - CLUSTER_VERSION : version de cluster compatible
- FLEET_PROJECT : projet hôte du parc dans lequel le cluster sera enregistré. Si vous souhaitez gérer ce cluster depuis un autre projet, consultez la page Enregistrer plusieurs projets.
- POD_ADDRESS_CIDR_BLOCKS : plage d'adresses CIDR pour les pods de votre cluster.
- SERVICE_ADDRESS_CIDR_BLOCKS : plage d'adresses CIDR pour les services de votre cluster.
- VPC_ID : ID du VPC AWS pour ce cluster.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud alpha container aws clusters create CLUSTER_NAME \ --location GOOGLE_CLOUD_LOCATION \ --aws-region AWS_REGION \ --role-arn API_ROLE_ARN \ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \ --database-encryption-kms-key-arn DB_KMS_KEY_ARN \ --iam-instance-profile CONTROL_PLANE_PROFILE \ --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \ --instance-placement TENANCY_TYPE --cluster-version CLUSTER_VERSION \ --fleet-project FLEET_PROJECT \ --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS \ --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS \ --vpc-id VPC_ID \ --tags="control-plane=CLUSTER_NAME"
Windows (PowerShell)
gcloud alpha container aws clusters create CLUSTER_NAME ` --location GOOGLE_CLOUD_LOCATION ` --aws-region AWS_REGION ` --role-arn API_ROLE_ARN ` --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN ` --database-encryption-kms-key-arn DB_KMS_KEY_ARN ` --iam-instance-profile CONTROL_PLANE_PROFILE ` --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 ` --instance-placement TENANCY_TYPE --cluster-version CLUSTER_VERSION ` --fleet-project FLEET_PROJECT ` --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS ` --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS ` --vpc-id VPC_ID ` --tags="control-plane=CLUSTER_NAME"
Windows (cmd.exe)
gcloud alpha container aws clusters create CLUSTER_NAME ^ --location GOOGLE_CLOUD_LOCATION ^ --aws-region AWS_REGION ^ --role-arn API_ROLE_ARN ^ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN ^ --database-encryption-kms-key-arn DB_KMS_KEY_ARN ^ --iam-instance-profile CONTROL_PLANE_PROFILE ^ --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 ^ --instance-placement TENANCY_TYPE --cluster-version CLUSTER_VERSION ^ --fleet-project FLEET_PROJECT ^ --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS ^ --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS ^ --vpc-id VPC_ID ^ --tags="control-plane=CLUSTER_NAME"
REST
L'exemple suivant crée un cluster avec des hôtes dédiés.Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- ENDPOINT : votre point de terminaison de service Google Cloud
- PROJECT_ID : projet Google Cloud
- USERNAME : utilisateur pouvant effectuer des opérations en tant qu'administrateur de cluster
- CLUSTER_NAME : nom de cluster choisi.
- GOOGLE_CLOUD_LOCATION : région Google Cloud compatible qui gère votre cluster, par exemple
us-west1
- AWS_REGION : région AWS dans laquelle créer le cluster.
- API_ROLE_ARN : nom ARN (Amazon Resource Name) du rôle de l'API GKE Multi-Cloud.
- CONFIG_KMS_KEY_ARN : nom ARN (Amazon Resource Name) de la clé KMS AWS servant à chiffrer les données utilisateur.
- DB_KMS_KEY_ARN : nom ARN (Amazon Resource Name) de la clé KMS AWS servant à chiffrer les secrets du cluster.
- CONTROL_PLANE_PROFILE : profil de l'instance IAM associée au cluster.
- CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2 et CONTROL_PLANE_SUBNET_3 par les ID de sous-réseau des trois instances de plan de contrôle du cluster.
- TENANCY_TYPE : paramètre de location du plan de contrôle.
Il peut s'agir de
DEFAULT
,DEDICATED
ouHOST
. - CLUSTER_VERSION : version de cluster compatible
- FLEET_PROJECT : projet hôte du parc dans lequel le cluster sera enregistré. Si vous souhaitez gérer ce cluster depuis un autre projet, consultez la page Enregistrer plusieurs projets.
- POD_ADDRESS_CIDR_BLOCKS : plage d'adresses CIDR pour les pods de votre cluster.
- SERVICE_ADDRESS_CIDR_BLOCKS : plage d'adresses CIDR pour les services de votre cluster.
- VPC_ID : ID du VPC AWS pour ce cluster.
Méthode HTTP et URL :
POST ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/awsClusters
Corps JSON de la requête :
{ "name": "CLUSTER_NAME", "authorization": { "adminUsers": [ { "username": "USERNAME" } ] }, "awsRegion": "AWS_REGION", "controlPlane": { "awsServicesAuthentication": { "roleArn": "API_ROLE_ARN" }, "configEncryption": { "kmsKeyArn": "CONFIG_KMS_KEY_ARN" }, "databaseEncryption": { "kmsKeyArn": "DB_KMS_KEY_ARN" }, "iamInstanceProfile": "CONTROL_PLANE_PROFILE", "mainVolume": {}, "rootVolume": {}, "sshConfig": {}, "subnetIds": [ "CONTROL_PLANE_SUBNET_1", "CONTROL_PLANE_SUBNET_2", "CONTROL_PLANE_SUBNET_3" ], "tags": { "google:gkemulticloud:cluster": "CLUSTER_NAME" }, "instancePlacement": { "tenancy": "TENANCY_TYPE" }, "version": "CLUSTER_VERSION" }, "fleet": { "project": "FLEET_PROJECT" }, "networking": { "podAddressCidrBlocks": [ "POD_ADDRESS_CIDR_BLOCKS" ], "serviceAddressCidrBlocks": [ "SERVICE_ADDRESS_CIDR_BLOCKS" ], "vpcId": "VPC_ID" } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.
Pour obtenir des options supplémentaires, consultez la documentation de référence sur Method: projects.locations.awsClusters.create.
Créer un pool de nœuds
gcloud
L'exemple suivant crée un pool de nœuds avec des hôtes dédiés. Lorsque vous créez un pool de nœuds, toutes les instances du pool possèdent le même type d'instance et le même paramètre de location.Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- GOOGLE_CLOUD_LOCATION : région Google Cloud compatible
- CLUSTER_NAME : nom de votre cluster.
- NODE_POOL_NAME : nom du pool de nœuds qui gère votre cluster (par exemple,
us-west1
) - 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.
- CONFIG_KMS_KEY_ARN : nom de ressource Amazon (ARN) de la clé KMS AWS qui chiffre les données utilisateur.
- NODEPOOL_PROFILE : profil d'instance IAM pour les VM de pool de nœuds.
- ROOT_VOLUME_SIZE : taille souhaitée pour le volume racine de chaque nœud, en Go.
- TENANCY_TYPE : paramètre de location du plan de contrôle.
Il peut s'agir de
DEFAULT
,DEDICATED
ouHOST
. - INSTANCE_TYPE : type d'instance de machine AWS souhaité pour ce pool de nœuds.
- NODEPOOL_SUBNET : ID du sous-réseau sur lequel le pool de nœuds sera exécuté. 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é.
- CLUSTER_VERSION : version de cluster compatible
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud alpha container aws node-pools create NODE_POOL_NAME \ --cluster CLUSTER_NAME \ --location GOOGLE_CLOUD_LOCATION \ --min-nodes MIN_NODES \ --max-nodes MAX_NODES \ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \ --iam-instance-profile NODEPOOL_PROFILE \ --root-volume-size ROOT_VOLUME_SIZE \ --instance-placement TENANCY_TYPE --instance-type INSTANCE_TYPE \ --subnet-id NODEPOOL_SUBNET \ --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \ --node-version CLUSTER_VERSION \ --max-pods-per-node 110 \ --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"
Windows (PowerShell)
gcloud alpha container aws node-pools create NODE_POOL_NAME ` --cluster CLUSTER_NAME ` --location GOOGLE_CLOUD_LOCATION ` --min-nodes MIN_NODES ` --max-nodes MAX_NODES ` --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN ` --iam-instance-profile NODEPOOL_PROFILE ` --root-volume-size ROOT_VOLUME_SIZE ` --instance-placement TENANCY_TYPE --instance-type INSTANCE_TYPE ` --subnet-id NODEPOOL_SUBNET ` --ssh-ec2-key-pair SSH_KEY_PAIR_NAME ` --node-version CLUSTER_VERSION ` --max-pods-per-node 110 ` --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"
Windows (cmd.exe)
gcloud alpha container aws node-pools create NODE_POOL_NAME ^ --cluster CLUSTER_NAME ^ --location GOOGLE_CLOUD_LOCATION ^ --min-nodes MIN_NODES ^ --max-nodes MAX_NODES ^ --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN ^ --iam-instance-profile NODEPOOL_PROFILE ^ --root-volume-size ROOT_VOLUME_SIZE ^ --instance-placement TENANCY_TYPE --instance-type INSTANCE_TYPE ^ --subnet-id NODEPOOL_SUBNET ^ --ssh-ec2-key-pair SSH_KEY_PAIR_NAME ^ --node-version CLUSTER_VERSION ^ --max-pods-per-node 110 ^ --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"
REST
L'exemple suivant crée un pool de nœuds avec des hôtes dédiés. Lorsque vous créez un pool de nœuds, toutes les instances du pool possèdent le même type d'instance et le même paramètre de location.Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- ENDPOINT : votre point de terminaison de service Google Cloud
- PROJECT_ID : projet Google Cloud
- USERNAME : utilisateur pouvant effectuer des opérations en tant qu'administrateur de cluster
- GOOGLE_CLOUD_LOCATION : région Google Cloud compatible
- CLUSTER_NAME : nom de votre cluster.
- NODE_POOL_NAME : nom du pool de nœuds qui gère votre cluster (par exemple,
us-west1
) - 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.
- CONFIG_KMS_KEY_ARN : nom de ressource Amazon (ARN) de la clé KMS AWS qui chiffre les données utilisateur.
- NODEPOOL_PROFILE : profil d'instance IAM pour les VM de pool de nœuds.
- ROOT_VOLUME_SIZE : taille souhaitée pour le volume racine de chaque nœud, en Go.
- TENANCY_TYPE : paramètre de location du plan de contrôle.
Il peut s'agir de
DEFAULT
,DEDICATED
ouHOST
. - INSTANCE_TYPE : type d'instance de machine AWS souhaité pour ce pool de nœuds.
- NODEPOOL_SUBNET : ID du sous-réseau sur lequel le pool de nœuds sera exécuté. 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é.
- CLUSTER_VERSION : version de cluster compatible
Méthode HTTP et URL :
POST ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/CLUSTER_NAME/awsNodePools
Corps JSON de la requête :
{ "name": "NODE_POOL_NAME", "autoscaling": { "minNodeCount": MIN_NODES, "maxNodeCount": MAX_NODES }, "config": { "configEncryption": { "kmsKeyArn": "CONFIG_KMS_KEY_ARN" }, "iamInstanceProfile": "NODEPOOL_PROFILE", "rootVolume": { "sizeGib": ROOT_VOLUME_SIZE }, "instancePlacement": { "tenancy": "TENANCY_TYPE" }, "instanceType" : "INSTANCE_TYPE" "tags": { "google:gkemulticloud:cluster": "NODE_POOL_NAME" } }, "maxPodsConstraint": { "maxPodsPerNode": "110" }, "subnetId": "NODEPOOL_SUBNET", "version": "CLUSTER_VERSION" }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.
Pour plus d'options, consultez la documentation de référence sur Method: projects.locations.awsClusters.awsNodePools.create.
Nettoyer
Pour supprimer un cluster à l'aide d'hôtes dédiés, procédez comme suit :
- Supprimez tous les pools de nœuds.
- Supprimez un cluster.
- Après avoir supprimé vos pools de nœuds et votre cluster, vous pouvez publier des hôtes dédiés.
Étape suivante
- Consultez la documentation de référence sur l'API AWSInstancePlacement.