Esta página 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 desean configurar, supervisar y gestionar la infraestructura en la nube. Para obtener más información sobre los roles comunes y las tareas de ejemplo que mencionamos en Google Cloud contenido, consulte Roles y tareas de usuario comunes de GKE Enterprise .
Antes de empezar
Antes de crear un clúster, debe cumplir con los prerrequisitos . En particular, debe proporcionar los siguientes recursos:
- Una VPC de AWS donde 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 en AWS asume al administrar el clúster. Esto requiere un conjunto específico de permisos de IAM .
- Claves CMK simétricas de KMS para el cifrado en reposo de datos del clúster (etcd) y configuración.
- El perfil de instancia de AWS IAM para cada réplica del plano de control. Esto requiere un conjunto específico de permisos de IAM .
- Un par de claves SSH EC2 (opcional) si necesita acceso SSH a las instancias EC2 que ejecutan cada réplica del plano de control.
Es su responsabilidad crear y administrar estos recursos, que pueden compartirse entre todos sus clústeres de GKE. Todos los demás recursos subyacentes de AWS con alcance de clúster son administrados por GKE en AWS.
Seleccione rangos CIDR para su clúster
Cuando crea un clúster en GKE en AWS, debe proporcionar rangos de direcciones IPv4 para usar en pods y servicios.
Estos rangos de IP se especifican utilizando la notación de enrutamiento entre dominios sin clases ( CIDR ), por ejemplo, 100.64.0.0/16
.
Rangos recomendados
Recomendamos los siguientes rangos de CIDR para servicios y pods:
- Servicios: 100.64.0.0/16
- Pods: 100.96.0.0/11
Estos rangos son lo suficientemente amplios para permitirle hacer crecer su clúster sin ningún problema.
Las siguientes secciones proporcionan más detalles.
Detalles sobre la selección de rangos
GKE en AWS utiliza una red superpuesta para pods y servicios, por lo que no es necesario enrutar los rangos de IP de estas redes dentro de la VPC. Debe garantizarse la disponibilidad de todos los rangos de IP que utilice. Para obtener más información, consulte Dataplane V2 .
Los rangos de IP de Pod y Servicio pueden superponerse con la red VPC, siempre que no incluyan los rangos de IP de subred del plano de control o del grupo de nodos.
El rango de IP del Pod y del Servicio debe estar dentro de uno de los siguientes rangos de IP privados:
-
10.0.0.0/8
,172.16.0.0/12
,192.168.0.0/16
— Direcciones IP privadas (RFC 1918) -
100.64.0.0/10
— Espacio de direcciones compartido (RFC 6598) -
192.0.0.0/24
— Asignaciones de protocolos IETF (RFC 6890) -
192.0.2.0/24
,198.51.100.0/24
,203.0.113.0/24
— Documentación (RFC 5737) -
192.88.99.0/24
— Retransmisión de IPv6 a IPv4 (obsoleta) (RFC 7526) -
198.18.0.0/15
— Pruebas comparativas (RFC 2544)
-
Recomendamos rangos de IP dentro de 100.64.0.0/10
(RFC 6598). Este rango está reservado para NAT de nivel de operador, que probablemente no se utilice en su VPC.
Por ejemplo, la siguiente es una configuración válida donde las redes Pod, Service y Node no se superponen (la VPC usa direcciones IP privadas RFC 1918, mientras que las redes Pod y Service se superponen en IP privadas RFC 6598).
- Red VPC:
10.0.0.0/16
,172.16.1.0/24
,172.16.2.0/24
- Red de pods:
100.65.0.0/16
- Red de servicio:
100.66.0.0/16
La siguiente también es una configuración válida a pesar de que las redes de Pod y Servicio se superponen con la red de VPC, ya que no hay superposición con las réplicas del plano de control.
- Red VPC:
10.0.0.0/16
- Red de pods:
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
,10.0.5.0/24
La siguiente configuración no es válida porque el rango de IP del pod se superpone con la red del plano de control. Esta superposición podría impedir que las cargas de trabajo se comuniquen con la réplica del plano de control en la red de VPC:
- Red VPC:
10.0.0.0/16
- Red de pods:
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
,10.0.3.0/24
Detalles sobre el rango de direcciones del Pod
Kubernetes asigna direcciones a los objetos Pod dentro de su rango de direcciones. El rango de Pods de un clúster se divide en rangos más pequeños para cada nodo. Cuando se programa un Pod en un nodo específico, Kubernetes le asigna una dirección IP del rango de ese nodo.
Para calcular el tamaño del rango de direcciones de Pod, debe estimar la cantidad de nodos que desea en su clúster y la cantidad de Pods que desea ejecutar en cada nodo.
La siguiente tabla proporciona recomendaciones de tamaño para los rangos de CIDR de Pod en función de la cantidad de nodos y Pods que desea ejecutar.
Tabla de rangos de direcciones de pod
Rango de direcciones de pod | Máximo de direcciones IP de pod | Máximo de nodos | Máximo de vainas |
---|---|---|---|
/24 El rango de direcciones de Pod más pequeño posible | 256 direcciones | 1 nodo | 110 cápsulas |
/23 | 512 direcciones | 2 nodos | 220 cápsulas |
/22 | 1.024 direcciones | 4 nodos | 440 cápsulas |
/21 | 2.048 direcciones | 8 nodos | 880 cápsulas |
/20 | 4.096 direcciones | 16 nodos | 1.760 cápsulas |
/19 | 8.192 direcciones | 32 nodos | 3.520 cápsulas |
/18 | 16.384 direcciones | 64 nodos | 7.040 cápsulas |
/17 | 32.768 direcciones | 128 nodos | 14.080 cápsulas |
/16 | 65.536 direcciones | 256 nodos | 28.160 cápsulas |
/15 | 131.072 direcciones | 512 nodos | 56.320 cápsulas |
/14 | 262.144 direcciones | 1.024 nodos | 112.640 cápsulas |
Detalles sobre el rango de direcciones del servicio
Kubernetes asigna direcciones IP virtuales para objetos de servicio (por ejemplo, balanceadores de carga de este rango de direcciones).
Para calcular el tamaño del rango de direcciones de servicio, debe estimar la cantidad de servicios que desea en su clúster.
La siguiente tabla proporciona recomendaciones de tamaño para los rangos de CIDR de servicio en función de la cantidad de servicios que desea ejecutar.
Tabla de rangos de direcciones de servicio
Rango de direcciones de servicio | Número máximo de servicios |
---|---|
/27 Rango de direcciones de servicio más pequeño posible | 32 Servicios |
/26 | 64 Servicios |
/25 | 128 Servicios |
/24 | 256 Servicios |
/23 | Servicios 512 |
/22 | 1.024 Servicios |
/21 | 2.048 Servicios |
/20 | 4.096 Servicios |
/19 | 8.192 Servicios |
/18 | 16.384 Servicios |
/17 | 32.768 Servicios |
/16 El rango de direcciones de servicio más amplio posible | 65.536 Servicios |
Seleccione su proyecto anfitrión de Fleet
Las flotas son unaGoogle Cloud Concepto para organizar clústeres en grupos más grandes. Con las flotas, puede administrar varios clústeres en varias nubes y aplicar políticas coherentes entre ellos. La API Multi-Cloud de GKE registra automáticamente sus clústeres con una flota al crearlos.
Al crear un clúster, se especifica un proyecto de host de Fleet desde el que se administrará. Dado que GKE en AWS usa el nombre del clúster como nombre de miembro de Fleet, debe asegurarse de que los nombres de los clústeres sean únicos en toda la Fleet.
Registro entre proyectos
Si desea utilizar un proyecto de Fleet Host distinto del Google Cloud En el proyecto donde se ubica el clúster, debe aplicar una política de IAM adicional a la cuenta de servicio del Agente de Servicio Multi-Cloud. Esto permite que la cuenta de servicio administre flotas con el proyecto host de flotas.
Para agregar el Agente de Servicio a su proyecto, ejecute este comando:
gcloud beta services identity create --service=gkemulticloud.googleapis.com \ --project=CLUSTER_PROJECT_NUMBER
Reemplace
CLUSTER_PROJECT_NUMBER
con su Google Cloud número de proyecto.Asigne 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"
Reemplace lo siguiente:
-
FLEET_PROJECT_ID
: el proyecto host de su flotaGoogle Cloud proyecto -
CLUSTER_PROJECT_NUMBER
: su Google Cloud número de proyecto
-
El nombre de la cuenta del agente de servicio multicloud tiene el siguiente formato: service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com
.
Puede encontrar sus cuentas de servicio en la Google Cloud Página de la cuenta de servicio de la consola. Para obtener más información sobre cómo encontrar el número de proyecto, consulte Identificación de proyectos .
Crea tu clúster
Utilice el siguiente comando para crear su clúster en GKE en AWS. Para obtener más información sobre este comando, incluidos sus parámetros opcionales, consulte la página de referencia de AWS sobre el contenedor de gcloud .
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"
Reemplace lo siguiente:
-
CLUSTER_NAME
: el nombre del clúster elegido -
AWS_REGION
: la región de AWS donde se creará el clúster -
GOOGLE_CLOUD_LOCATION
: el nombre de la Google CloudUbicación desde la que se gestionará este clúster, tal como se define en Google Cloud regiones de gestión . -
CLUSTER_VERSION
: la versión de Kubernetes que se instalará en su clúster -
FLEET_PROJECT
: el proyecto host de Fleet donde se registrará el clúster. Si desea administrar este clúster desde otro...Google Cloud proyecto, véase Registro entre proyectos . -
VPC_ID
: el ID de la VPC de AWS para este clúster -
CONTROL_PLANE_SUBNET_1
,CONTROL_PLANE_SUBNET_2
,CONTROL_PLANE_SUBNET_3
: los identificadores de subred para las tres instancias del plano de control de su clúster -
POD_ADDRESS_CIDR_BLOCKS
: el rango de direcciones CIDR para los pods de su clúster -
SERVICE_ADDRESS_CIDR_BLOCKS
: el rango de direcciones CIDR para los servicios de su clúster -
API_ROLE_ARN
: el ARN de la función de API de GKE Multi-Cloud -
CONTROL_PLANE_PROFILE
: el perfil de la instancia de IAM asociada al clúster. Para obtener más información sobre cómo actualizar un perfil de instancia de IAM, consulte Actualizar el perfil de la instancia de IAM de AWS . -
DB_KMS_KEY_ARN
: el nombre de recurso de Amazon (ARN) de la clave AWS KMS para cifrar los secretos del clúster -
CONFIG_KMS_KEY_ARN
: el nombre de recurso de Amazon (ARN) de la clave AWS KMS para cifrar los datos del usuario -
ADMIN_USERS_LIST
(opcional): una lista separada por comas de las direcciones de correo electrónico de los usuarios a los que se otorgarán privilegios administrativos; por ejemplo, "kai@example.com,hao@example.com,kalani@example.com". El valor predeterminado es el usuario que creó el clúster.
Si está presente, el parámetro --tags
aplica la etiqueta de AWS dada a todos los recursos subyacentes de AWS administrados por GKE en AWS. Este ejemplo etiqueta los nodos del plano de control con el nombre del clúster al que pertenecen.
No podrá acceder mediante SSH a estos nodos del plano de control a menos que especifique un par de claves SSH con el indicador --ssh-ec2-key-pair
.
Para ver todas las versiones de Kubernetes compatibles en un determinado Google Cloud Ubicación, ejecute el siguiente comando.
gcloud container aws get-server-config --location GCP_LOCATION
Autorizar el registro en la nube/monitoreo en la nube
Para que GKE en AWS pueda crear y cargar registros y métricas del sistema enGoogle Cloud, debe estar autorizado.
Para autorizar la identidad de carga de trabajo de Kubernetes gke-system/gke-telemetry-agent
a escribir registros en Google Cloud Registro y métricas para Google Cloud Para monitorear, ejecute 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
Reemplace GOOGLE_PROJECT_ID
con el clúster Google Cloud Identificación del proyecto.
Este enlace de IAM otorga acceso a todos los clústeres en el Google Cloud Proyecto para cargar registros y métricas. Solo necesitas ejecutarlo después de crear el primer clúster del proyecto.
Agregar este enlace de IAM fallará a menos que se haya creado al menos un clúster en su 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 la creación del clúster.
¿Qué sigue?
- Crear un grupo de nodos .
- Configurar el acceso al clúster para kubectl .
- Pruebe el inicio rápido para iniciar su primera carga de trabajo.
- Lea la documentación de referencia para
gcloud container clusters create
. - ¿Tuviste algún problema al crear un clúster? Consulta la sección "Solución de problemas" para obtener más información.