Crea un clúster con hosts dedicados

En esta página, se muestra cómo crear un clúster y un grupo de nodos que use instancias dedicadas o hosts dedicados de AWS. Las instancias y los hosts dedicados se reservan solo para tu uso y no se comparten con otros clientes de AWS. La configuración para instancias y hosts dedicados se conoce como usuario.

Antes de comenzar

Para usar instancias o hosts dedicados GKE en AWS, debes crear un clúster nuevo de versión 1.22.8-gke.200 o posterior. No puedes actualizar un clúster existente y agregar hosts dedicados.

Requisitos del clúster

Antes de crear un clúster, debes completar los requisitos. En particular, debes proporcionar los siguientes recursos:

  • Una VPC de AWS en la que se ejecutará el clúster
  • Hasta tres subredes de AWS para las tres réplicas del plano de control. Cada una debe estar en una zona de disponibilidad de AWS diferente
  • El rol de IAM de AWS que GKE on AWS adopta cuando administras tu clúster. Esto requiere un conjunto específico de permisos de IAM.
  • Claves CMK simétricas de KMS para la encriptación en reposo de los datos del clúster (etcd) y la configuración
  • El perfil de la instancia de IAM de AWS para cada réplica del plano de control. Esto requiere un conjunto específico de permisos de IAM
  • Un par de claves SSH de EC2 (opcional) si necesitas acceso de SSH a las instancias de EC2 que ejecutan cada réplica del plano de control

Es tu responsabilidad crear y administrar estos recursos, que se pueden compartir entre todos los clústeres de Anthos. GKE on AWS administra el resto de los recursos de AWS con alcance de clúster subyacentes.

En estas instrucciones, se usa la API de GKE Multi-cloud para crear un clúster y un grupo de nodos. Para usar la API de GKE Multi-cloud, debes estar familiarizado con las APIs de Google Cloud.

Instancias y hosts dedicados

Cuando creas un clúster o grupo de nodos, eliges una de las siguientes opciones:

  • DEFAULT: inicia instancias con el usuario predeterminado de tu VPC
  • DEDICATED: Inicia instancias en una instancia dedicada
  • HOST: Inicia instancias en un host dedicado

Antes de crear un clúster o grupo de nodos, decide cuál es la opción adecuada para ti.

Para obtener más información, consulta Configura el usuario de instancias con una configuración de lanzamiento, instancias dedicadas y hosts dedicados en la documentación de AWS.

Combina la configuración de usuarios en un clúster

Puedes establecer la configuración de usuario de forma individual para cada plano de control y grupo de nodos. Por ejemplo, puedes crear un clúster con el plano de control en hosts compartidos, un grupo de nodos en hosts dedicados y otro grupo de nodos en hosts compartidos.

Asigna hosts dedicados

Antes de crear un clúster con hosts dedicados, debes asignar hosts para todas las instancias que tu clúster necesita. Los hosts deben tener los siguientes atributos:

  • Usar las mismas familias de instancias que necesitan los recursos de tu clúster
  • Estar ubicados en las mismas zonas en las que planeas crear clústeres
  • Habilitar la posición automática
  • Tener suficiente cuota para iniciar hosts dedicados

Para obtener más información sobre la asignación de hosts dedicados, consulta Comienza a usar hosts dedicados.

Limitaciones

En estas secciones, se enumeran las limitaciones de la compatibilidad con el host dedicado en GKE on AWS.

Grupos de nodos

No puedes actualizar la configuración de usuario de un grupo de nodos. Para mover las cargas de trabajo a instancias con otra configuración de usuario, crea un grupo de nodos nuevo con tu usuario deseado y borra el existente.

Familias de instancias compatibles

GKE en AWS admite hosts dedicados de las siguientes familias de instancias.

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

No se admiten otras familias de instancias.

Tipos de nodos

Solo son compatibles los grupos de nodos de Linux.

Crea un clúster

Debes crear un clúster que admita hosts dedicados con el método: projects.locations.awsClusters.create con la API de GKE Multi-cloud. Para crear un clúster, realiza los siguientes pasos:

gcloud

En el siguiente ejemplo, se crea un clúster con hosts dedicados.

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • CLUSTER_NAME: el nombre del clúster que elegiste
    • GOOGLE_CLOUD_LOCATION: la región de Google Cloud compatible que se administra el clúster, por ejemplo, us-west1
    • AWS_REGION: la región de AWS en la que se creará el clúster
    • API_ROLE_ARN: el ARN del rol de la API de GKE Multi-cloud
    • CONFIG_KMS_KEY_ARN el nombre del recurso de Amazon (ARN) de la clave de KMS de AWS para encriptar los datos del usuario
    • DB_KMS_KEY_ARN: el nombre del recurso de Amazon (ARN) de la clave de KMS de AWS que encriptará los Secrets del clúster
    • CONTROL_PLANE_PROFILE: el perfil de la instancia de IAM asociada con el clúster
    • CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3 con los ID de subred para las tres instancias del plano de control de tu clúster
    • TENANCY_TYPE: la configuración de usuario del plano de control. Puede ser DEFAULT, DEDICATED, o HOST.
    • CLUSTER_VERSION: una versión de clúster compatible
    • FLEET_PROJECT: el proyecto host de la flota en el que se registrará el clúster. Si deseas administrar este clúster desde otro proyecto, consulta Registro entre proyectos.
    • POD_ADDRESS_CIDR_BLOCKS: el rango de direcciones CIDR para los Pods del clúster
    • SERVICE_ADDRESS_CIDR_BLOCKS: el rango de direcciones CIDR para los servicios del clúster
    • VPC_ID: el ID de la VPC de AWS para este clúster

Ejecuta el siguiente 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

En el siguiente ejemplo, se crea un clúster con hosts dedicados.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • ENDPOINT: el extremo de servicio de Google Cloud
  • PROJECT_ID: es tu proyecto de Google Cloud
  • USERNAME: el usuario que puede realizar operaciones como administrador del clúster
    • CLUSTER_NAME: el nombre del clúster que elegiste
    • GOOGLE_CLOUD_LOCATION: la región de Google Cloud compatible que se administra el clúster, por ejemplo, us-west1
    • AWS_REGION: la región de AWS en la que se creará el clúster
    • API_ROLE_ARN: el ARN del rol de la API de GKE Multi-cloud
    • CONFIG_KMS_KEY_ARN el nombre del recurso de Amazon (ARN) de la clave de KMS de AWS para encriptar los datos del usuario
    • DB_KMS_KEY_ARN: el nombre del recurso de Amazon (ARN) de la clave de KMS de AWS que encriptará los Secrets del clúster
    • CONTROL_PLANE_PROFILE: el perfil de la instancia de IAM asociada con el clúster
    • CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3 con los ID de subred para las tres instancias del plano de control de tu clúster
    • TENANCY_TYPE: la configuración de usuario del plano de control. Puede ser DEFAULT, DEDICATED, o HOST.
    • CLUSTER_VERSION: una versión de clúster compatible
    • FLEET_PROJECT: el proyecto host de la flota en el que se registrará el clúster. Si deseas administrar este clúster desde otro proyecto, consulta Registro entre proyectos.
    • POD_ADDRESS_CIDR_BLOCKS: el rango de direcciones CIDR para los Pods del clúster
    • SERVICE_ADDRESS_CIDR_BLOCKS: el rango de direcciones CIDR para los servicios del clúster
    • VPC_ID: el ID de la VPC de AWS para este clúster

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
    "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 tu solicitud, expande una de estas opciones:

Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.

Para obtener más opciones, consulta la documentación de referencia del método: projects.locations.awsClusters.create.

Crear un grupo de nodos

gcloud

En el siguiente ejemplo, se crea un grupo de nodos con hosts dedicados. Cuando creas un grupo de nodos, todas las instancias dentro del grupo tienen el mismo tipo de instancia y configuración de usuario.

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • GOOGLE_CLOUD_LOCATION: la región de Google Cloud compatible
    • CLUSTER_NAME: Es el nombre del clúster
    • NODE_POOL_NAME: Es el nombre del grupo de nodos. que administra tu clúster, por ejemplo, us-west1
    • MIN_NODES: la cantidad mínima de nodos que puede contener el grupo de nodos
    • MAX_NODES: la cantidad máxima de nodos que puede contener el grupo de nodos
    • CONFIG_KMS_KEY_ARN: el nombre del recurso de Amazon (ARN) de la clave de KMS de AWS que encripta los datos del usuario
    • NODEPOOL_PROFILE: el perfil de la instancia de IAM para las VM del grupo de nodos
    • ROOT_VOLUME_SIZE: el tamaño deseado para el volumen raíz de cada nodo, en Gb
    • TENANCY_TYPE: la configuración de usuario del plano de control. Puede ser DEFAULT, DEDICATED, o HOST.
    • INSTANCE_TYPE: el tipo de instancia de máquina de AWS deseado para este grupo de nodos
    • NODEPOOL_SUBNET: el ID de la subred en la que se ejecutará el grupo de nodos. Si esta subred está fuera del bloque CIDR principal de VPC, se necesitan algunos pasos adicionales. Para obtener más información, consulta los grupos de seguridad.
    • CLUSTER_VERSION: Una versión de clúster compatible

Ejecuta el siguiente 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

En el siguiente ejemplo, se crea un grupo de nodos con hosts dedicados. Cuando creas un grupo de nodos, todas las instancias dentro del grupo tienen el mismo tipo de instancia y configuración de usuario.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • ENDPOINT: el extremo de servicio de Google Cloud
  • PROJECT_ID: es tu proyecto de Google Cloud
  • USERNAME: el usuario que puede realizar operaciones como administrador del clúster
    • GOOGLE_CLOUD_LOCATION: la región de Google Cloud compatible
    • CLUSTER_NAME: Es el nombre del clúster
    • NODE_POOL_NAME: Es el nombre del grupo de nodos. que administra tu clúster, por ejemplo, us-west1
    • MIN_NODES: la cantidad mínima de nodos que puede contener el grupo de nodos
    • MAX_NODES: la cantidad máxima de nodos que puede contener el grupo de nodos
    • CONFIG_KMS_KEY_ARN: el nombre del recurso de Amazon (ARN) de la clave de KMS de AWS que encripta los datos del usuario
    • NODEPOOL_PROFILE: el perfil de la instancia de IAM para las VM del grupo de nodos
    • ROOT_VOLUME_SIZE: el tamaño deseado para el volumen raíz de cada nodo, en Gb
    • TENANCY_TYPE: la configuración de usuario del plano de control. Puede ser DEFAULT, DEDICATED, o HOST.
    • INSTANCE_TYPE: el tipo de instancia de máquina de AWS deseado para este grupo de nodos
    • NODEPOOL_SUBNET: el ID de la subred en la que se ejecutará el grupo de nodos. Si esta subred está fuera del bloque CIDR principal de VPC, se necesitan algunos pasos adicionales. Para obtener más información, consulta los grupos de seguridad.
    • CLUSTER_VERSION: Una versión de clúster compatible

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
    "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 tu solicitud, expande una de estas opciones:

Deberías recibir un código de estado exitoso (2xx) y una respuesta vacía.

Para obtener más opciones, consulta la documentación de referencia del método: projects.locations.awsClusters.awsNodePools.create.

Realice una limpieza

Para borrar un clúster mediante hosts dedicados, sigue estos pasos:

  1. Borra cualquier grupo de nodos
  2. Borrar un clúster.
  3. Después de borrar los grupos de nodos y el clúster, puedes liberar hosts dedicados.

¿Qué sigue?