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 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 VPC
  • DEDICATED: avviare istanze su un'istanza dedicata
  • HOST: 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 o HOST.
    • 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 o HOST.
    • 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 o HOST.
    • 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 o HOST.
    • 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:

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

Passaggi successivi