Crie um cluster com anfitriões dedicados

Esta página mostra-lhe como criar um cluster e um conjunto de nós que usam instâncias dedicadas da AWS ou hosts dedicados. Os anfitriões e as instâncias dedicados são reservados apenas para o seu uso e não são partilhados com outros clientes da AWS. A definição para anfitriões e instâncias dedicados é conhecida como arrendamento.

Antes de começar

Para usar instâncias ou anfitriões dedicados com o GKE no AWS, tem de criar uma nova versão do cluster 1.22.8-gke.200 ou superior. Não pode atualizar um cluster existente e adicionar anfitriões dedicados.

Requisitos de clusters

Antes de criar um cluster, tem de concluir os pré-requisitos. Em particular, tem de fornecer os seguintes recursos:

  • Uma VPC da AWS onde o cluster vai ser executado.
  • Até três sub-redes da AWS para as três réplicas do plano de controlo. Cada um tem de estar numa zona de disponibilidade da AWS diferente.
  • A função do IAM da AWS que o GKE na AWS assume quando gere o seu cluster. Isto requer um conjunto específico de autorizações da IAM.
  • Chaves CMK simétricas do KMS para encriptação em repouso de dados do cluster (etcd) e configuração.
  • O perfil da instância do AWS IAM para cada réplica do plano de controlo. Isto requer um conjunto específico de autorizações de IAM.
  • Um par de chaves SSH do EC2 (opcional) se precisar de acesso SSH às instâncias do EC2 que executam cada réplica do plano de controlo.

É da sua responsabilidade criar e gerir estes recursos, que podem ser partilhados entre todos os seus clusters do Anthos. Todos os outros recursos da AWS subjacentes ao âmbito do cluster são geridos pelo GKE na AWS.

Estas instruções usam a API GKE Multi-Cloud para criar um cluster e um conjunto de nós. Antes de usar a API GKE Multi-Cloud, certifique-se de que conhece as Google Cloud APIs.

Anfitriões dedicados e instâncias dedicadas

Quando cria um cluster ou um conjunto de nós, escolhe uma das seguintes opções:

  • DEFAULT: inicie instâncias com a permanência predefinida da sua VPC
  • DEDICATED: inicie instâncias numa instância dedicada
  • HOST: inicie instâncias num anfitrião dedicado

Antes de criar um cluster ou um conjunto de nós, decida qual a opção mais adequada para si.

Para mais informações, consulte os artigos Configurar a posse de instâncias com uma configuração de lançamento, Instâncias dedicadas e Hosts dedicados na documentação da AWS.

Misturar definições de posse num cluster

Pode configurar as definições de posse individualmente para cada plano de controlo e conjunto de nós. Por exemplo, pode criar um cluster com o plano de controlo em anfitriões partilhados, um conjunto de nós em anfitriões dedicados e outro conjunto de nós em anfitriões partilhados.

Atribua anfitriões dedicados

Antes de criar um cluster com anfitriões dedicados, tem de atribuir anfitriões a todas as instâncias de que o cluster precisa. Os anfitriões devem ter os seguintes atributos:

  • Use as mesmas famílias de instâncias de que os recursos do cluster precisam
  • Alocados nas mesmas zonas onde planeou criar clusters
  • Ative o posicionamento automático
  • Tem quota suficiente para lançar anfitriões dedicados

Para mais informações sobre a atribuição de anfitriões dedicados, consulte o artigo Introdução aos anfitriões dedicados.

Limitações

Estas secções apresentam as limitações do apoio técnico de anfitriões dedicados no GKE no AWS.

Node pools

Não pode atualizar a definição de permanência de um node pool. Para mover cargas de trabalho para instâncias com outra definição de arrendamento, crie um novo conjunto de nós com o arrendamento pretendido e elimine o existente.

Famílias de instâncias suportadas

O GKE na AWS suporta hosts dedicados das seguintes famílias de instâncias.

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

Outras famílias de instâncias não são suportadas.

Tipos de nós

Apenas são suportados pools de nós Linux.

Crie um cluster

Cria um cluster que suporta anfitriões dedicados com o Method: projects.locations.awsClusters.create com a API GKE Multi-Cloud. Para criar um cluster, siga estes passos:

gcloud

O exemplo seguinte cria um cluster com anfitriões dedicados.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

    • CLUSTER_NAME: o nome do cluster escolhido
    • GOOGLE_CLOUD_LOCATION: a região suportada Google Cloud que gere o seu cluster, por exemplo, us-west1
    • AWS_REGION: a região da AWS na qual criar o cluster
    • API_ROLE_ARN: o ARN da função da API GKE Multi-Cloud
    • CONFIG_KMS_KEY_ARN: o Amazon Resource Name (ARN) da chave do AWS KMS para encriptar os dados do utilizador
    • DB_KMS_KEY_ARN: o nome de recurso da Amazon (ARN) da chave do AWS KMS para encriptar os segredos do cluster
    • CONTROL_PLANE_PROFILE: o perfil da instância do IAM associada ao cluster
    • CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3 com os IDs das sub-redes das três instâncias do plano de controlo do cluster
    • TENANCY_TYPE: a definição da posse do plano de controlo. Pode ser DEFAULT, DEDICATED ou HOST.
    • CLUSTER_VERSION: A versão do cluster suportada
    • FLEET_PROJECT: o projeto anfitrião do Fleet onde o cluster vai ser registado. Se quiser gerir este cluster a partir de outro projeto, consulte Registo entre projetos
    • POD_ADDRESS_CIDR_BLOCKS: o intervalo de endereços CIDR para os pods do cluster
    • SERVICE_ADDRESS_CIDR_BLOCKS: o intervalo de endereços CIDR para os serviços do cluster
    • VPC_ID: o ID da VPC da AWS para este cluster

Execute o seguinte comando:

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

O exemplo seguinte cria um cluster com anfitriões dedicados.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • ENDPOINT: o seu Google Cloud ponto final do serviço
  • PROJECT_ID: o seu Google Cloud projeto
  • USERNAME: utilizador que pode realizar operações como administrador do cluster
    • CLUSTER_NAME: o nome do cluster escolhido
    • GOOGLE_CLOUD_LOCATION: a região suportada Google Cloud que gere o seu cluster, por exemplo, us-west1
    • AWS_REGION: a região da AWS na qual criar o cluster
    • API_ROLE_ARN: o ARN da função da API GKE Multi-Cloud
    • CONFIG_KMS_KEY_ARN: o Amazon Resource Name (ARN) da chave do AWS KMS para encriptar os dados do utilizador
    • DB_KMS_KEY_ARN: o nome de recurso da Amazon (ARN) da chave do AWS KMS para encriptar os segredos do cluster
    • CONTROL_PLANE_PROFILE: o perfil da instância do IAM associada ao cluster
    • CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3 com os IDs das sub-redes das três instâncias do plano de controlo do cluster
    • TENANCY_TYPE: a definição da posse do plano de controlo. Pode ser DEFAULT, DEDICATED ou HOST.
    • CLUSTER_VERSION: A versão do cluster suportada
    • FLEET_PROJECT: o projeto anfitrião do Fleet onde o cluster vai ser registado. Se quiser gerir este cluster a partir de outro projeto, consulte Registo entre projetos
    • POD_ADDRESS_CIDR_BLOCKS: o intervalo de endereços CIDR para os pods do cluster
    • SERVICE_ADDRESS_CIDR_BLOCKS: o intervalo de endereços CIDR para os serviços do cluster
    • VPC_ID: o ID da VPC da AWS para este cluster

Método HTTP e URL:

POST ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/awsClusters

Corpo JSON do pedido:

{
    "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"
    }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber um código de estado de êxito (2xx) e uma resposta vazia.

Para mais opções, consulte a documentação de referência Method: projects.locations.awsClusters.create.

Crie um node pool

gcloud

O exemplo seguinte cria um node pool com anfitriões dedicados. Quando cria um conjunto de nós, todas as instâncias no conjunto têm o mesmo tipo de instância e definição de arrendamento.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

    • GOOGLE_CLOUD_LOCATION: a região suportada Google Cloud
    • CLUSTER_NAME: o nome do cluster
    • NODE_POOL_NAME: o nome do conjunto de nós que gere o seu cluster, por exemplo, us-west1
    • MIN_NODES: o número mínimo de nós que o node pool pode conter
    • MAX_NODES: o número máximo de nós que o node pool pode conter
    • CONFIG_KMS_KEY_ARN: o nome de recurso da Amazon (ARN) da chave do AWS KMS que encripta os dados do utilizador
    • NODEPOOL_PROFILE: o perfil da instância do IAM para VMs do node pool
    • ROOT_VOLUME_SIZE: o tamanho pretendido para o volume de raiz de cada nó, em GB
    • TENANCY_TYPE: a definição da posse do plano de controlo. Pode ser DEFAULT, DEDICATED ou HOST.
    • INSTANCE_TYPE: o tipo de instância de máquina da AWS pretendido para este node pool
    • NODEPOOL_SUBNET: o ID da sub-rede em que o conjunto de nós será executado. Se esta sub-rede estiver fora do bloco CIDR principal da VPC, são necessários alguns passos adicionais. Para mais informações, consulte os grupos de segurança.
    • CLUSTER_VERSION: A versão do cluster suportada

Execute o seguinte comando:

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

O exemplo seguinte cria um node pool com anfitriões dedicados. Quando cria um conjunto de nós, todas as instâncias no conjunto têm o mesmo tipo de instância e definição de arrendamento.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • ENDPOINT: o seu Google Cloud ponto final do serviço
  • PROJECT_ID: o seu Google Cloud projeto
  • USERNAME: utilizador que pode realizar operações como administrador do cluster
    • GOOGLE_CLOUD_LOCATION: a região suportada Google Cloud
    • CLUSTER_NAME: o nome do cluster
    • NODE_POOL_NAME: o nome do conjunto de nós que gere o seu cluster, por exemplo, us-west1
    • MIN_NODES: o número mínimo de nós que o node pool pode conter
    • MAX_NODES: o número máximo de nós que o node pool pode conter
    • CONFIG_KMS_KEY_ARN: o nome de recurso da Amazon (ARN) da chave do AWS KMS que encripta os dados do utilizador
    • NODEPOOL_PROFILE: o perfil da instância do IAM para VMs do node pool
    • ROOT_VOLUME_SIZE: o tamanho pretendido para o volume de raiz de cada nó, em GB
    • TENANCY_TYPE: a definição da posse do plano de controlo. Pode ser DEFAULT, DEDICATED ou HOST.
    • INSTANCE_TYPE: o tipo de instância de máquina da AWS pretendido para este node pool
    • NODEPOOL_SUBNET: o ID da sub-rede em que o conjunto de nós será executado. Se esta sub-rede estiver fora do bloco CIDR principal da VPC, são necessários alguns passos adicionais. Para mais informações, consulte os grupos de segurança.
    • CLUSTER_VERSION: A versão do cluster suportada

Método HTTP e URL:

POST ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/CLUSTER_NAME/awsNodePools

Corpo JSON do pedido:

{
    "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"
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber um código de estado de êxito (2xx) e uma resposta vazia.

Para ver opções adicionais, consulte a Method: projects.locations.awsClusters.awsNodePools.create documentação de referência.

Limpar

Para eliminar um cluster com anfitriões dedicados, siga estes passos:

  1. Elimine todos os node pools
  2. Elimine um cluster.
  3. Depois de eliminar os conjuntos de nós e o cluster, pode libertar anfitriões dedicados.

O que se segue?