crea un cluster con host dedicati

Questa pagina mostra come creare un cluster e un pool di nodi che utilizzano istanze o host dedicati AWS. Gli host e le istanze dedicati sono riservati esclusivamente al tuo utilizzo e non vengono condivisi con altri clienti AWS. L'impostazione per gli host e le istanze dedicati è conosciuta come tenancy.

Prima di iniziare

Per utilizzare istanze o host dedicati con GKE su AWS, devi creare un nuovo cluster 1.22.8-gke.200 o versioni 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 sottoreti AWS per le tre repliche del piano di controllo. Ognuna deve essere in una zona di disponibilità AWS diversa.
  • Il ruolo IAM AWS assunto da GKE su AWS durante la gestione del cluster. Ciò richiede un insieme specifico di autorizzazioni IAM.
  • Chiavi CMK simmetriche KMS per la crittografia at-rest dei dati e della configurazione del cluster (etcd).
  • Il profilo istanza AWS IAM per ogni replica del piano di controllo. È necessario un insieme specifico di autorizzazioni IAM.
  • Una coppia di chiavi SSH EC2 (facoltativa) se hai bisogno di 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 di base basate su cluster sono gestite da GKE su AWS.

Queste istruzioni utilizzano l'API GKE Multi-Cloud per creare un cluster e un pool di nodi. Prima di utilizzare l'API GKE Multi-Cloud, assicurati di conoscere le Google Cloud API.

Host e istanze dedicati

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

  • DEFAULT: avvia le istanze con la tenancy predefinita della tua 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 quale opzione è adatta a te.

Per ulteriori informazioni, consulta la pagina sulla configurazione della tenancy delle istanze con una configurazione di lancio, sulle istanze dedicate e sugli host dedicati nella documentazione AWS.

Combinazione di impostazioni di tenancy in un cluster

Puoi configurare le impostazioni di tenancy singolarmente per ogni piano di controllo e per ogni pool di nodi. Ad esempio, puoi creare un cluster con il piano di controllo 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 di cui ha bisogno il cluster. Gli host devono avere i seguenti attributi:

  • Utilizza le stesse famiglie di istanze necessarie per le risorse del cluster
  • Alloca nelle stesse zone in cui avevi pianificato di creare i cluster
  • Attiva il posizionamento automatico
  • Hai una quota sufficiente per lanciare host dedicati

Per ulteriori 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 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 gli host dedicati delle seguenti famiglie di istanze.

  • t3
  • m5
  • m5d
  • c5
  • c5d
  • r5
  • r5d
  • i3en

Le 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 supporta gli host dedicati con il metodo: projects.locations.awsClusters.create con l'API GKE Multi-Cloud. Per creare un cluster:

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 scelto
    • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata che gestisce il tuo cluster, ad esempio us-west1
    • AWS_REGION: la regione AWS in cui creare il cluster
    • API_ROLE_ARN: l'ARN del ruolo dell'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 KMS 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 tuo cluster
    • TENANCY_TYPE: l'impostazione per la tenancy del piano di controllo. Può essere DEFAULT, DEDICATED o HOST.
    • CLUSTER_VERSION: una versione del cluster supportata
    • FLEET_PROJECT: il progetto Parco risorse host in cui verrà registrato il cluster. Se vuoi gestire questo cluster da un altro progetto, consulta la sezione 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 il seguente 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 del servizio
  • PROJECT_ID: il tuo Google Cloud project
  • USERNAME: utente che può eseguire operazioni come amministratore del cluster
    • CLUSTER_NAME: il nome del cluster scelto
    • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata che gestisce il tuo cluster, ad esempio us-west1
    • AWS_REGION: la regione AWS in cui creare il cluster
    • API_ROLE_ARN: l'ARN del ruolo dell'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 KMS 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 tuo cluster
    • TENANCY_TYPE: l'impostazione per la tenancy del piano di controllo. Può essere DEFAULT, DEDICATED o HOST.
    • CLUSTER_VERSION: una versione del cluster supportata
    • FLEET_PROJECT: il progetto Parco risorse host in cui verrà registrato il cluster. Se vuoi gestire questo cluster da un altro progetto, consulta la sezione 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 di operazione riuscita (2xx) e una risposta vuota.

Per altre opzioni, consulta la documentazione di riferimento 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 Google Cloud supportata
    • 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 KMS AWS che cripta i dati utente
    • NODEPOOL_PROFILE: il profilo istanza IAM per le VM del pool di nodi
    • ROOT_VOLUME_SIZE: le dimensioni desiderate per il volume principale di ogni 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 macchina AWS preferito per questo pool di nodi
    • NODEPOOL_SUBNET: l'ID della subnet su cui verrà eseguito il pool di nodi. Se questa subnet non rientra nel blocco CIDR principale del VPC, sono necessari alcuni passaggi aggiuntivi. Per ulteriori informazioni, consulta gruppi di sicurezza.
    • CLUSTER_VERSION: una versione del cluster supportata

Esegui il seguente 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 del servizio
  • PROJECT_ID: il tuo Google Cloud project
  • USERNAME: utente che può eseguire operazioni come amministratore del cluster
    • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata
    • 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 KMS AWS che cripta i dati utente
    • NODEPOOL_PROFILE: il profilo istanza IAM per le VM del pool di nodi
    • ROOT_VOLUME_SIZE: le dimensioni desiderate per il volume principale di ogni 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 macchina AWS preferito per questo pool di nodi
    • NODEPOOL_SUBNET: l'ID della subnet su cui verrà eseguito il pool di nodi. Se questa subnet non rientra nel blocco CIDR principale del VPC, sono necessari alcuni passaggi aggiuntivi. Per ulteriori informazioni, consulta 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 di operazione riuscita (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, svolgi i seguenti passaggi:

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

Passaggi successivi