Crear un clúster

En esta página se describe cómo crear un clúster de GKE en AWS. También puedes crear una VPC y un clúster con Terraform.

Esta página está dirigida a administradores, arquitectos y operadores que quieran configurar, monitorizar y gestionar la infraestructura de la nube. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud

Antes de empezar

Antes de crear un clúster, debes completar los requisitos previos. En concreto, debe 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 gestión de identidades y accesos de AWS que asume GKE en AWS al gestionar tu clúster. Para ello, se necesita un conjunto específico de permisos de gestión de identidades y accesos.
  • Claves simétricas de CMEK de KMS para el cifrado en reposo de los datos y la configuración del clúster (etcd).
  • El perfil de instancia de AWS IAM de cada réplica del plano de control. Para ello, se necesita un conjunto específico de permisos de gestión de identidades y accesos.
  • Un par de claves SSH de EC2 (opcional) si necesitas acceso SSH a las instancias de EC2 que ejecutan cada réplica del plano de control.

Es tu responsabilidad crear y gestionar estos recursos, que se pueden compartir entre todos tus clústeres de GKE. GKE on AWS gestiona todos los demás recursos de AWS subyacentes con ámbito de clúster.

Seleccionar intervalos CIDR para el clúster

Cuando creas un clúster en GKE en AWS, debes proporcionar intervalos de direcciones IPv4 que se usarán para los pods y los servicios.

Estos intervalos de direcciones IP se especifican mediante la notación de enrutamiento entre dominios sin clases (CIDR). Por ejemplo, 100.64.0.0/16.

Te recomendamos los siguientes intervalos CIDR para los servicios y los pods:

  • Servicios: 100.64.0.0/16
  • Pods: 100.96.0.0/11

Estos intervalos son lo suficientemente grandes como para que puedas ampliar tu clúster sin problemas.

En las siguientes secciones se proporcionan más detalles al respecto.

Detalles sobre la selección de intervalos

GKE en AWS usa una red superpuesta para los pods y los servicios, por lo que no es necesario que los intervalos de IP de estas redes se puedan enrutar en la VPC. Los intervalos de IP que utilices deben estar disponibles. Para obtener más información, consulta Dataplane V2.

  • Los intervalos de IPs de pods y servicios pueden solaparse con la red de VPC, siempre que no incluyan los intervalos de IPs de la subred del plano de control o del grupo de nodos.

  • El intervalo de IPs de pods y servicios debe estar dentro de uno de los siguientes intervalos de IPs privadas:

    • 10.0.0.0/8, 172.16.0.0/12 y 192.168.0.0/16: direcciones IP privadas (RFC 1918)
    • 100.64.0.0/10: espacio de direcciones compartidas (RFC 6598)
    • 192.0.0.0/24: asignaciones de protocolo IETF (RFC 6890)
    • 192.0.2.0/24, 198.51.100.0/24 y 203.0.113.0/24: documentación (RFC 5737)
    • 192.88.99.0/24: retransmisión de IPv6 a IPv4 (obsoleto) (RFC 7526)
    • 198.18.0.0/15: pruebas de comparativas (RFC 2544)

Te recomendamos que uses intervalos de IP dentro de 100.64.0.0/10 (RFC 6598). Este intervalo se reserva para NAT de nivel de operador, que probablemente no se utilice en tu VPC.

Por ejemplo, la siguiente es una configuración válida en la que las redes de pods, servicios y nodos no se superponen (la VPC usa direcciones IP privadas RFC 1918, mientras que las redes de pods y servicios se superponen a las IPs privadas RFC 6598).

  • Red de VPC: 10.0.0.0/16, 172.16.1.0/24, 172.16.2.0/24
  • Red de pódcasts: 100.65.0.0/16
  • Red de servicio: 100.66.0.0/16

La siguiente configuración también es válida a pesar de que las redes de pods y de servicios se solapen con la red de VPC, ya que no se solapan con las réplicas del plano de control.

  • Red de VPC: 10.0.0.0/16
  • Red de pódcasts: 10.0.1.0/24
  • Red de servicio: 10.0.2.0/24
  • Subredes de réplica del plano de control: 10.0.3.0/24, 10.0.4.0/24 y 10.0.5.0/24

La siguiente configuración no es válida porque el intervalo de IPs del pod se solapa con la red del plano de control. Esta superposición puede impedir que las cargas de trabajo se comuniquen con la réplica del plano de control en la red de VPC:

  • Red de VPC: 10.0.0.0/16
  • Red de pódcasts: 10.0.1.0/24
  • Red de servicio: 10.1.0.0/24
  • Subredes de réplica del plano de control: 10.0.1.0/24, 10.0.2.0/24 y 10.0.3.0/24

Detalles sobre el intervalo de direcciones de los pods

Kubernetes asigna direcciones a objetos Pod del intervalo de direcciones de pods. El intervalo de pods de un clúster se divide en intervalos más pequeños para cada nodo. Cuando se programa un pod en un nodo concreto, Kubernetes le asigna una dirección IP del intervalo del nodo.

Para calcular el tamaño del intervalo de direcciones de pods, debes estimar el número de nodos que quieres que haya en tu clúster y el número de pods que quieres ejecutar en cada nodo.

En la siguiente tabla se ofrecen recomendaciones de tamaño para los intervalos de CIDR de pods en función del número de nodos y pods que quieras ejecutar.

Tabla de intervalos de direcciones de pods

Intervalo de direcciones de pods Número máximo de direcciones IP de Pod Número máximo de nodos Número máximo de pods
/24
Intervalo de direcciones de pod más pequeño posible
256 direcciones 1 nodo 110 pods
/23 512 direcciones 2 nodos 220 cápsulas
/22 1024 direcciones 4 nodos 440 cápsulas
/21 2048 direcciones 8 nodos 880 Pods
/20 4096 direcciones 16 nodos 1760 Pods
/19 8192 direcciones 32 nodos 3520 Pods
/18 16.384 direcciones 64 nodos 7040 Pods
/17 32.768 direcciones 128 nodos 14.080 Pods
/16 65.536 direcciones 256 nodos 28.160 Pods
/15 131.072 direcciones 512 nodos 56.320 Pods
/14 262.144 direcciones 1024 nodos 112.640 Pods

Detalles sobre el intervalo de direcciones de servicio

Kubernetes asigna direcciones IP virtuales a los objetos Service, como los balanceadores de carga, de este intervalo de direcciones.

Para calcular el tamaño del intervalo de direcciones de servicio, debes estimar el número de servicios que quieres tener en tu clúster.

En la siguiente tabla se ofrecen recomendaciones de tamaño para los intervalos CIDR de los servicios en función del número de servicios que quieras ejecutar.

Tabla de intervalos de direcciones de servicio

Intervalo de direcciones de servicios Número máximo de servicios
/27
Intervalo de direcciones de servicio más pequeño posible
32 servicios
/26 64 servicios
/25 128 Services
/24 256 Services
/23 512 Services
/22 1024 Services
/21 2048 Services
/20 4096 Servicios
/19 8192 servicios
/18 16.384 servicios
/17 32.768 servicios
/16
Intervalo de direcciones de servicio más grande posible
65.536 servicios

Selecciona tu proyecto host de la flota

Las flotas son un concepto deGoogle Cloud para organizar los clústeres en grupos más grandes. Con las flotas, puedes gestionar varios clústeres en diferentes nubes y aplicar políticas coherentes en todos ellos. La API GKE Multi-Cloud registra automáticamente tus clústeres en una flota cuando se crea el clúster.

Cuando creas un clúster, especificas un proyecto de host de flota desde el que se gestionará el clúster. Como GKE en AWS usa el nombre del clúster como nombre de miembro de la flota, debes asegurarte de que los nombres de tus clústeres sean únicos en toda la flota.

Registro entre proyectos

Si quieres usar un proyecto host de flota que no sea el proyecto en el que se encuentra el clúster, debes aplicar un enlace de política de IAM adicional a la cuenta de servicio del agente de servicio multicloud. Google Cloud De esta forma, la cuenta de servicio puede gestionar flotas con el proyecto de host de la flota.

  1. Para añadir el agente de servicio a tu proyecto, ejecuta este comando:

    gcloud beta services identity create --service=gkemulticloud.googleapis.com \
      --project=CLUSTER_PROJECT_NUMBER
    

    Sustituye CLUSTER_PROJECT_NUMBER por el Google Cloud número de tu proyecto.

  2. Asigna este enlace con el siguiente comando:

    gcloud projects add-iam-policy-binding FLEET_PROJECT_ID \
      --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com" \
      --role="roles/gkemulticloud.serviceAgent"
    

    Haz los cambios siguientes:

    • FLEET_PROJECT_ID: proyecto host de tu flota Google Cloud
    • CLUSTER_PROJECT_NUMBER: tu Google Cloud proyecto number

El nombre de la cuenta del agente de servicio multicloud tiene el siguiente formato: service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com.

Puedes encontrar tus cuentas de servicio en la página Cuenta de servicio de la Google Cloud consola. Para obtener más información sobre cómo encontrar el número de tu proyecto, consulta Identificar proyectos.

Crear un clúster

Usa el siguiente comando para crear tu clúster en GKE on AWS. Para obtener más información sobre este comando, incluidos sus parámetros opcionales, consulta la página de referencia de gcloud container aws.

gcloud container aws clusters create CLUSTER_NAME \
  --aws-region AWS_REGION \
  --location GOOGLE_CLOUD_LOCATION \
  --cluster-version CLUSTER_VERSION \
  --fleet-project FLEET_PROJECT \
  --vpc-id VPC_ID \
  --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \
  --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS \
  --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS \
  --role-arn API_ROLE_ARN \
  --database-encryption-kms-key-arn DB_KMS_KEY_ARN \
  --admin-users ADMIN_USERS_LIST \
  --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
  --iam-instance-profile CONTROL_PLANE_PROFILE \
  --tags "Name=CLUSTER_NAME-cp"

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre del clúster que hayas elegido
  • AWS_REGION: la región de AWS en la que se creará el clúster
  • GOOGLE_CLOUD_LOCATION: el nombre de la Google Cloud ubicación desde la que se gestionará este clúster, tal como se define en las Google Cloud regiones de gestión.
  • CLUSTER_VERSION: la versión de Kubernetes que se va a instalar en el clúster
  • FLEET_PROJECT: el proyecto host de Fleet en el que se registrará el clúster. Si quieres gestionar este clúster desde otro proyecto, consulta Registro entre proyectos.Google Cloud
  • VPC_ID: el ID de la VPC de AWS de este clúster
  • CONTROL_PLANE_SUBNET_1, CONTROL_PLANE_SUBNET_2 y CONTROL_PLANE_SUBNET_3: los IDs de subred de las tres instancias del plano de control de tu clúster.
  • POD_ADDRESS_CIDR_BLOCKS: el intervalo de direcciones CIDR de los pods de tu clúster
  • SERVICE_ADDRESS_CIDR_BLOCKS: el intervalo de direcciones CIDR de los servicios de tu clúster
  • API_ROLE_ARN: el ARN del rol de la API de GKE Multi-cloud
  • CONTROL_PLANE_PROFILE: el perfil de la instancia de gestión de identidades y accesos asociada al clúster. Para obtener información sobre cómo actualizar un perfil de instancia de IAM, consulta Actualizar un perfil de instancia de AWS IAM.
  • DB_KMS_KEY_ARN: el nombre de recurso de Amazon (ARN) de la clave de KMS de AWS para cifrar los secretos del clúster
  • CONFIG_KMS_KEY_ARN: el nombre de recurso de Amazon (ARN) de la clave de KMS de AWS para cifrar los datos de usuario.
  • ADMIN_USERS_LIST (opcional): lista separada por comas de las direcciones de correo electrónico de los usuarios a los que se les concederán privilegios de administrador. Por ejemplo, "kai@example.com,hao@example.com,kalani@example.com". El valor predeterminado es el usuario que crea el clúster.

Si está presente, el parámetro --tags aplica la etiqueta de AWS indicada a todos los recursos de AWS subyacentes gestionados por GKE en AWS. En este ejemplo se etiquetan los nodos del plano de control con el nombre del clúster al que pertenecen.

No podrás usar SSH en estos nodos del plano de control a menos que especifiques un par de claves SSH con la marca --ssh-ec2-key-pair.

Para ver todas las versiones de Kubernetes admitidas en una Google Cloud ubicación, ejecuta el siguiente comando.

gcloud container aws get-server-config --location GCP_LOCATION

Autorizar Cloud Logging o Cloud Monitoring

Para que GKE en AWS pueda crear y subir registros y métricas del sistema aGoogle Cloud, debe estar autorizado.

Para autorizar la identidad de carga de trabajo de Kubernetes gke-system/gke-telemetry-agent para escribir registros en Google Cloud Logging y métricas en Google Cloud Monitoring, ejecuta este comando:

gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
  --member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
  --role=roles/gkemulticloud.telemetryWriter

Sustituye GOOGLE_PROJECT_ID por el ID del proyecto del clúster. Google Cloud

Este enlace de gestión de identidades y accesos concede acceso a todos los clústeres del proyecto Google Cloud project para subir registros y métricas. Solo tienes que ejecutarlo después de crear el primer clúster del proyecto.

No se podrá añadir este enlace de gestión de identidades y accesos a menos que se haya creado al menos un clúster en tu Google Cloud proyecto. Esto se debe a que el grupo de identidades de carga de trabajo al que hace referencia (GOOGLE_PROJECT_ID.svc.id.goog) no se aprovisiona hasta que se crea el clúster.

Siguientes pasos