crea un cluster con host dedicati

Questa pagina mostra come creare un cluster e un pool di nodi che utilizza istanze dedicate o host dedicati AWS. Le istanze e gli host dedicati sono riservati esclusivamente al tuo uso e non sono condivisi con altri clienti AWS. L'impostazione per istanze e host 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 successiva. 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 piano di controllo. Ciascuno deve trovarsi in una zona di disponibilità AWS diversa.
  • Il ruolo AWS IAM che GKE su AWS assume durante la gestione del cluster. Ciò richiede un set specifico di autorizzazioni IAM.
  • Chiavi CMK simmetriche KMS per la crittografia at-rest dei dati del cluster (etcd) e della configurazione.
  • Il profilo dell'istanza AWS IAM per ogni replica del piano di controllo. Ciò richiede 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 piano di controllo.

È tua responsabilità creare e gestire queste risorse, che possono essere condivise tra tutti i tuoi cluster Anthos. Tutte le altre risorse AWS con ambito cluster sottostanti sono gestite da GKE su AWS.

Queste istruzioni utilizzano l'API GKE Multi-Cloud per creare un cluster e un pool di nodi. Per utilizzare l'API GKE Multi-Cloud, devi avere familiarità con le API Google Cloud.

Host dedicati e istanze dedicate

Quando crei un cluster o un pool di nodi, scegli una delle seguenti opzioni:

  • DEFAULT: avvia le istanze con la tenancy predefinita del VPC
  • DEDICATED: avvia le istanze su un'istanza dedicata
  • HOST: avvia le istanze su un host dedicato

Prima di creare un cluster o un pool di nodi, decidi l'opzione più adatta a te.

Per ulteriori informazioni, consulta Configurazione della tenancy delle istanze con una configurazione di avvio, istanze dedicate e host dedicati nella documentazione di AWS.

Combinare le 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 piano di controllo sugli 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 degli host per tutte le istanze necessarie per il tuo cluster. Gli host devono avere i seguenti attributi:

  • Utilizza le stesse famiglie di istanze necessarie per le risorse dei cluster
  • Allocata nelle stesse zone in cui hai pianificato la creazione dei cluster
  • Abilita posizionamento automatico
  • Disponi di quota sufficiente per avviare host dedicati

Per maggiori informazioni sull'allocazione di host dedicati, consulta la guida introduttiva agli 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 carichi di lavoro su istanze con un'altra impostazione di tenancy, crea un nuovo pool di nodi con la tenancy desiderata ed elimina quello esistente.

Famiglie di istanze supportate

GKE su AWS supporta gli 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

Puoi creare un cluster che supporta 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 uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

    • CLUSTER_NAME: nome del cluster che hai scelto
    • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata 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 AWS KMS per criptare i dati utente
    • DB_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave AWS KMS 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 piano di controllo del cluster
    • TENANCY_TYPE: l'impostazione per la tenancy del piano di controllo. Può essere DEFAULT, DEDICATED o HOST.
    • CLUSTER_VERSION: una versione 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, consulta 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 del 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, effettua le seguenti sostituzioni:

  • ENDPOINT: il tuo endpoint di servizio Google Cloud
  • PROJECT_ID: il tuo progetto Google Cloud
  • USERNAME: utente che può eseguire operazioni come amministratore del cluster
    • CLUSTER_NAME: nome del cluster che hai scelto
    • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata 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 AWS KMS per criptare i dati utente
    • DB_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave AWS KMS 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 piano di controllo del cluster
    • TENANCY_TYPE: l'impostazione per la tenancy del piano di controllo. Può essere DEFAULT, DEDICATED o HOST.
    • CLUSTER_VERSION: una versione 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, consulta 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 del 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 ulteriori opzioni, consulta la documentazione di riferimento Metodo: projects.locations.awsClusters.create.

Crea un pool di nodi

gcloud

L'esempio seguente crea un pool di nodi con host dedicati. Quando crei un pool di nodi, tutte le istanze all'interno del pool hanno lo stesso tipo di istanza e la stessa impostazione di tenancy.

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

    • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata
    • CLUSTER_NAME: 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 ciascun nodo, in GB
    • TENANCY_TYPE: l'impostazione per la tenancy del piano di controllo. Può essere DEFAULT, DEDICATED o HOST.
    • INSTANCE_TYPE: il tipo di istanza della 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 all'esterno del blocco CIDR primario del VPC, sono necessari alcuni passaggi aggiuntivi. Per maggiori informazioni, consulta la pagina relativa ai gruppi di sicurezza.
    • CLUSTER_VERSION: una versione 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 all'interno del pool hanno lo stesso tipo di istanza e la stessa impostazione di tenancy.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • ENDPOINT: il tuo endpoint di servizio Google Cloud
  • PROJECT_ID: il tuo progetto Google Cloud
  • USERNAME: utente che può eseguire operazioni come amministratore del cluster
    • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata
    • CLUSTER_NAME: 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 ciascun nodo, in GB
    • TENANCY_TYPE: l'impostazione per la tenancy del piano di controllo. Può essere DEFAULT, DEDICATED o HOST.
    • INSTANCE_TYPE: il tipo di istanza della 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 all'esterno del blocco CIDR primario del VPC, sono necessari alcuni passaggi aggiuntivi. Per maggiori informazioni, consulta la pagina relativa ai gruppi di sicurezza.
    • CLUSTER_VERSION: una versione 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 ulteriori opzioni, consulta la documentazione di riferimento Metodo: projects.locations.awsClusters.awsNodePools.create.

esegui la pulizia

Per eliminare un cluster utilizzando host dedicati, esegui questi passaggi:

  1. Elimina tutti i pool di nodi
  2. Elimina un cluster.
  3. Dopo aver eliminato il cluster e i pool di nodi, puoi rilasciare host dedicati.

Passaggi successivi