Questa pagina mostra come creare un cluster e un pool di nodi che utilizza istanze dedicate o host dedicati di AWS. Gli host e le istanze dedicati sono riservati al tuo uso esclusivo e non vengono condivisi con altri clienti AWS. L'impostazione per host e istanze dedicati è nota come tenancy.
Prima di iniziare
Per utilizzare istanze o host dedicati con GKE su AWS, devi creare un nuovo cluster versione 1.22.8-gke.200 o successive. Non puoi eseguire l'upgrade di un cluster esistente e aggiungere host dedicati.
Requisiti per i cluster
Prima di creare un cluster, devi completare i prerequisiti. In particolare, devi fornire le seguenti risorse:
- Un VPC AWS in cui verrà eseguito il cluster.
- Fino a tre subnet AWS per le tre repliche del control plane. Ciascuna deve trovarsi in una zona di disponibilità AWS diversa.
- Il ruolo AWS IAM che GKE su AWS assume durante la gestione del cluster. Per farlo, è necessario un insieme specifico di autorizzazioni IAM.
- Chiavi CMK simmetriche KMS per la crittografia at-rest dei dati del cluster (etcd) e della configurazione.
- Il profilo istanza AWS IAM per ogni replica del control plane. Per farlo, è necessario un insieme specifico di autorizzazioni IAM.
- Una coppia di chiavi SSH EC2 (facoltativa) se hai bisogno dell'accesso SSH alle istanze EC2 che eseguono ogni replica del control plane.
È tua responsabilità creare e gestire queste risorse, che possono essere condivise tra tutti i tuoi cluster Anthos. Tutte le altre risorse AWS sottostanti con ambito cluster sono gestite da GKE su AWS.
Queste istruzioni utilizzano l'API GKE Multi-Cloud per creare un cluster e pool di nodi. Prima di utilizzare l'API GKE Multi-Cloud, assicurati di conoscere le Google Cloud API.
Host dedicati e istanze dedicate
Quando crei un cluster o un pool di nodi, puoi scegliere una delle seguenti opzioni:
DEFAULT
: avvia istanze con il tenancy predefinito della tua VPCDEDICATED
: avviare istanze su un'istanza dedicataHOST
: avviare istanze su un host dedicato
Prima di creare un cluster o un pool di nodi, decidi quale opzione è più adatta a te.
Per ulteriori informazioni, consulta le sezioni Configurazione del tenancy dell'istanza con una configurazione di avvio, istanze dedicate e host dedicati nella documentazione di AWS.
Combinazione delle impostazioni di tenancy in un cluster
Puoi configurare le impostazioni di tenancy singolarmente per ogni piano di controllo e pool di nodi. Ad esempio, puoi creare un cluster con il control plane su host condivisi, un pool di nodi su host dedicati e un altro pool di nodi su host condivisi.
Alloca host dedicati
Prima di creare un cluster con host dedicati, devi allocare gli host per tutte le istanze necessarie al cluster. Gli host devono avere i seguenti attributi:
- Utilizza le stesse famiglie di istanze necessarie per le risorse del cluster
- Allocati nelle stesse zone in cui avevi pianificato di creare i cluster
- Attivare il posizionamento automatico
- Hai quota sufficiente per avviare host dedicati
Per ulteriori informazioni sull'allocazione di host dedicati, vedi Guida introduttiva all'utilizzo di host dedicati.
Limitazioni
Questa sezione elenca le limitazioni del supporto degli host dedicati in GKE su AWS.
Pool di nodi
Non puoi aggiornare l'impostazione di tenancy di un pool di nodi. Per spostare i workload su istanze con un'altra impostazione di tenancy, crea un nuovo pool di nodi con la tenancy che preferisci ed elimina quello esistente.
Famiglie di istanze supportate
GKE su AWS supporta host dedicati delle seguenti famiglie di istanze.
- t3
- m5
- m5d
- c5
- c5d
- r5
- r5d
- i3en
Altre famiglie di istanze non sono supportate.
Tipi di nodo
Sono supportati solo i pool di nodi Linux.
Crea un cluster
Crea un cluster che supporti gli host dedicati con il Metodo: projects.locations.awsClusters.create con l'API GKE Multi-Cloud. Per creare un cluster, segui questi passaggi:
gcloud
L'esempio seguente crea un cluster con host dedicati.Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- CLUSTER_NAME: il nome del cluster che hai scelto
- GOOGLE_CLOUD_LOCATION: la
regione supportata Google Cloud
che gestisce il cluster, ad esempio
us-west1
- AWS_REGION: la regione AWS in cui creare il cluster
- API_ROLE_ARN: l'ARN del ruolo API GKE Multi-cloud
- CONFIG_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave KMS di AWS per criptare i dati utente
- DB_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave KMS di AWS per criptare i secret del cluster
- CONTROL_PLANE_PROFILE: il profilo dell'istanza IAM associata al cluster
- CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3 con gli ID subnet per le tre istanze del control plane del cluster
- TENANCY_TYPE: l'impostazione per il
tenant del control plane.
Può essere
DEFAULT
,DEDICATED
oHOST
. - CLUSTER_VERSION: una versione del cluster supportata
- FLEET_PROJECT: il progetto host del parco risorse in cui verrà registrato il cluster. Se vuoi gestire questo cluster da un altro progetto, vedi Registrazione tra progetti.
- POD_ADDRESS_CIDR_BLOCKS: l'intervallo di indirizzi CIDR per i pod del cluster
- SERVICE_ADDRESS_CIDR_BLOCKS: l'intervallo di indirizzi CIDR per i servizi del cluster
- VPC_ID: l'ID della VPC AWS per questo cluster
Esegui questo comando:
Linux, macOS o 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'esempio seguente crea un cluster con host dedicati.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- ENDPOINT: il tuo Google Cloud endpoint di servizio
- PROJECT_ID: il tuo Google Cloud progetto
- USERNAME: utente che può eseguire operazioni come amministratore del cluster
- CLUSTER_NAME: il nome del cluster che hai scelto
- GOOGLE_CLOUD_LOCATION: la
regione supportata Google Cloud
che gestisce il cluster, ad esempio
us-west1
- AWS_REGION: la regione AWS in cui creare il cluster
- API_ROLE_ARN: l'ARN del ruolo API GKE Multi-cloud
- CONFIG_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave KMS di AWS per criptare i dati utente
- DB_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave KMS di AWS per criptare i secret del cluster
- CONTROL_PLANE_PROFILE: il profilo dell'istanza IAM associata al cluster
- CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3 con gli ID subnet per le tre istanze del control plane del cluster
- TENANCY_TYPE: l'impostazione per il
tenant del control plane.
Può essere
DEFAULT
,DEDICATED
oHOST
. - CLUSTER_VERSION: una versione del cluster supportata
- FLEET_PROJECT: il progetto host del parco risorse in cui verrà registrato il cluster. Se vuoi gestire questo cluster da un altro progetto, vedi Registrazione tra progetti.
- POD_ADDRESS_CIDR_BLOCKS: l'intervallo di indirizzi CIDR per i pod del cluster
- SERVICE_ADDRESS_CIDR_BLOCKS: l'intervallo di indirizzi CIDR per i servizi del cluster
- VPC_ID: l'ID della VPC AWS per questo cluster
Metodo HTTP e URL:
POST ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/awsClusters
Corpo JSON della richiesta:
{ "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" } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.
Per altre opzioni, consulta la documentazione di riferimento relativa al metodo projects.locations.awsClusters.create.
Crea un node pool
gcloud
L'esempio seguente crea un pool di nodi con host dedicati. Quando crei un pool di nodi, tutte le istanze al suo interno hanno lo stesso tipo di istanza e la stessa impostazione di tenancy.Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- GOOGLE_CLOUD_LOCATION: la regione supportata Google Cloud
- CLUSTER_NAME: il nome del cluster
- NODE_POOL_NAME: il nome del pool di nodi
che gestisce il cluster, ad esempio
us-west1
- MIN_NODES: il numero minimo di nodi che il pool di nodi può contenere
- MAX_NODES: il numero massimo di nodi che il pool di nodi può contenere
- CONFIG_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave AWS KMS che cripta i dati utente
- NODEPOOL_PROFILE: il profilo dell'istanza IAM per le VM del pool di nodi
- ROOT_VOLUME_SIZE: la dimensione desiderata per il volume root di ogni nodo, in GB
- TENANCY_TYPE: l'impostazione per il
tenant del control plane.
Può essere
DEFAULT
,DEDICATED
oHOST
. - INSTANCE_TYPE: il tipo di istanza macchina AWS desiderato per questo pool di nodi
- NODEPOOL_SUBNET: l'ID della subnet su cui verrà eseguito il pool di nodi. Se questa subnet si trova al di fuori del blocco CIDR principale del VPC, sono necessari alcuni passaggi aggiuntivi. Per ulteriori informazioni, vedi Gruppi di sicurezza.
- CLUSTER_VERSION: una versione del cluster supportata
Esegui questo comando:
Linux, macOS o 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'esempio seguente crea un pool di nodi con host dedicati. Quando crei un pool di nodi, tutte le istanze al suo interno hanno lo stesso tipo di istanza e la stessa impostazione di tenancy.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- ENDPOINT: il tuo Google Cloud endpoint di servizio
- PROJECT_ID: il tuo Google Cloud progetto
- USERNAME: utente che può eseguire operazioni come amministratore del cluster
- GOOGLE_CLOUD_LOCATION: la regione supportata Google Cloud
- CLUSTER_NAME: il nome del cluster
- NODE_POOL_NAME: il nome del pool di nodi
che gestisce il cluster, ad esempio
us-west1
- MIN_NODES: il numero minimo di nodi che il pool di nodi può contenere
- MAX_NODES: il numero massimo di nodi che il pool di nodi può contenere
- CONFIG_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave AWS KMS che cripta i dati utente
- NODEPOOL_PROFILE: il profilo dell'istanza IAM per le VM del pool di nodi
- ROOT_VOLUME_SIZE: la dimensione desiderata per il volume root di ogni nodo, in GB
- TENANCY_TYPE: l'impostazione per il
tenant del control plane.
Può essere
DEFAULT
,DEDICATED
oHOST
. - INSTANCE_TYPE: il tipo di istanza macchina AWS desiderato per questo pool di nodi
- NODEPOOL_SUBNET: l'ID della subnet su cui verrà eseguito il pool di nodi. Se questa subnet si trova al di fuori del blocco CIDR principale del VPC, sono necessari alcuni passaggi aggiuntivi. Per ulteriori informazioni, vedi Gruppi di sicurezza.
- CLUSTER_VERSION: una versione del cluster supportata
Metodo HTTP e URL:
POST ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/CLUSTER_NAME/awsNodePools
Corpo JSON della richiesta:
{ "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" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.
Per altre opzioni, consulta la documentazione di riferimento relativa al metodo projects.locations.awsClusters.awsNodePools.create.
Pulizia
Per eliminare un cluster utilizzando host dedicati, segui questi passaggi:
- Eliminare tutti i node pool
- Elimina un cluster.
- Dopo aver eliminato i node pool e il cluster, puoi rilasciare gli host dedicati.
Passaggi successivi
- Leggi la documentazione di riferimento dell'API AWSInstancePlacement.