Este tema describe cómo personalizar la configuración de un clúster de usuarios de GKE en AWS.
Es posible que desee crear un clúster de usuarios personalizado por los siguientes motivos:
- Creación de otro clúster para un entorno de prueba o de ensayo.
- Agregar grupos de nodos con diferentes tipos de máquinas.
- Creación de un clúster en zonas de disponibilidad (AZ) específicas de AWS.
Antes de empezar
Antes de comenzar a usar GKE en AWS, asegúrese de haber realizado las siguientes tareas:
- Complete los prerrequisitos .
Instalar un servicio de gestión .
Si desea crear un clúster sin usar
terraform output example_cluster
, disponga de subredes privadas de AWS para su plano de control. Cada subred debe pertenecer a una zona de disponibilidad (AZ) diferente en la misma región de AWS. Las tablas de rutas deben configurarse para permitir el tráfico entre subredes privadas, y cada subred debe tener acceso a una puerta de enlace NAT.Tenga su ID de nube virtual privada (VPC) de AWS. Un ID de VPC se parece
vpc-012345678abcde
. Puede encontrarlo en la consola de AWS .
Para conectarse a sus recursos de GKE en AWS, siga estos pasos. Seleccione si ya tiene una VPC de AWS (o una conexión directa a su VPC) o si creó una VPC dedicada al crear su servicio de administración.
VPC existente
Si tiene una conexión directa o VPN a una VPC existente, omita la línea env HTTP_PROXY=http://localhost:8118
de los comandos de este tema.
VPC dedicada
Cuando crea un servicio de administración en una VPC dedicada, GKE en AWS incluye un host bastión en una subred pública.
Para conectarse a su servicio de administración, realice los siguientes pasos:
Vaya al directorio con su configuración de GKE en AWS. Este directorio se creó al instalar el servicio de administración .
cd anthos-aws
Para abrir el túnel, ejecute el script
bastion-tunnel.sh
. El túnel redirecciona alocalhost:8118
.Para abrir un túnel al host bastión, ejecute el siguiente comando:
./bastion-tunnel.sh -N
Los mensajes del túnel SSH aparecen en esta ventana. Cuando esté listo para cerrar la conexión, detenga el proceso usando Control+C o cerrando la ventana.
Abra una nueva terminal y cámbiese a su directorio
anthos-aws
.cd anthos-aws
Comprueba que puedes conectarte al clúster con
kubectl
.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
La salida incluye la URL del servidor API del servicio de administración.
Seleccionar un tamaño de instancia del plano de control
GKE en AWS no permite redimensionar las instancias del plano de control. Antes de crear el clúster de usuarios, seleccione el tamaño de instancia de sus planos de control. El tamaño de los planos de control depende de la cantidad de nodos del clúster. La siguiente tabla contiene los tamaños de instancia recomendados para los distintos tamaños de clúster.
Tamaño del clúster (nodos) | Tipo de instancia del plano de control |
---|---|
1 – 10 | m5.grande |
11 – 100 | m5.extra grande |
101 – 200 | m5.2xgrande |
Creación de un nuevo clúster con una configuración personalizada
Puede usar terraform output example_cluster
para configurar un clúster de usuario por cada clúster de administración. Si desea crear clústeres adicionales, debe aplicar una configuración personalizada.
En este ejemplo, se crea un clúster manualmente a partir de los CRD AWSCluster
y AWSNodePool
.
Vaya al directorio con su configuración de GKE en AWS. Este directorio se creó al instalar el servicio de administración .
cd anthos-aws
Desde su directorio
anthos-aws
, useanthos-gke
para cambiar el contexto a su servicio de administración.cd anthos-aws anthos-gke aws management get-credentials
Abra un editor de texto y copie la siguiente definición
AWSCluster
en un archivo llamadocustom-cluster.yaml
.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSCluster metadata: name: CLUSTER_NAME spec: region: AWS_REGION networking: vpcID: VPC_ID podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS ServiceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS controlPlane: version: CLUSTER_VERSION # Latest version is 1.25.5-gke.2100 instanceType: AWS_INSTANCE_TYPE keyName: SSH_KEY_NAME subnetIDs: - CONTROL_PLANE_SUBNET_IDS securityGroupIDs: - CONTROL_PLANE_SECURITY_GROUPS iamInstanceProfile: CONTROL_PLANE_IAM_ROLE rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: ROOT_VOLUME_TYPE # Optional iops: ROOT_VOLUME_IOPS # Optional kmsKeyARN: ROOT_VOLUME_KEY # Optional etcd: mainVolume: sizeGiB: ETCD_VOLUME_SIZE volumeType: ETCD_VOLUME_TYPE # Optional iops: ETCD_VOLUME_IOPS # Optional kmsKeyARN: ETCD_VOLUME_KEY # Optional databaseEncryption: kmsKeyARN: ARN_OF_KMS_KEY hub: # Optional membershipName: ANTHOS_CONNECT_NAME cloudOperations: # Optional projectID: YOUR_PROJECT location: GCP_REGION enableLogging: ENABLE_LOGGING enableMonitoring: ENABLE_MONITORING workloadIdentity: # Optional oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKET
Reemplace lo siguiente:
- CLUSTER_NAME : el nombre de su clúster.
AWS_REGION : la región de AWS donde se ejecuta su clúster.
VPC_ID : el ID de la VPC donde se ejecuta su clúster.
POD_ADDRESS_CIDR_BLOCKS : el rango de direcciones IPv4 que utilizan los pods del clúster. Actualmente, solo se admite un rango. Este rango no debe superponerse con ninguna subred accesible desde su red. Es seguro usar el mismo rango en varios objetos AWSCluster. Por ejemplo,
10.2.0.0/16
.SERVICE_ADDRESS_CIDR_BLOCKS : el rango de direcciones IPv4 que utilizan los servicios del clúster. Actualmente, solo se admite un rango. Este rango no debe solaparse con ninguna subred accesible desde su red. Es seguro usar el mismo rango en varios objetos de AWSCluster. Por ejemplo,
10.1.0.0/16
.SERVICE_LOAD_BALANCER_SUBNETS : los ID de subred donde GKE en AWS puede crear balanceadores de carga públicos o privados.
CLUSTER_VERSION : una versión de Kubernetes compatible con GKE en AWS. La versión más reciente es 1.25.5-gke.2100.
AWS_INSTANCE_TYPE : un tipo de instancia EC2 compatible .
SSH_KEY_NAME : un par de claves de AWS EC2 .
CONTROL_PLANE_SUBNET_IDS : los ID de subred en las AZ donde se ejecutan sus instancias del plano de control.
CONTROL_PLANE_SECURITY_GROUPS : ID de grupo de seguridad creado durante la instalación del servicio de administración. Puede personalizarlo añadiendo los ID de grupo de seguridad necesarios para conectarse al plano de control.
CONTROL_PLANE_IAM_PROFILE : nombre del perfil de instancia de AWS EC2 asignado a las réplicas del plano de control.
ROOT_VOLUME_SIZE : el tamaño, en gibibytes (GiB), de los volúmenes raíz de su plano de control.
ROOT_VOLUME_TYPE con el tipo de volumen EBS . Por ejemplo,
gp3
.ROOT_VOLUME_IOPS con la cantidad de operaciones de E/S por segundo (IOPS) aprovisionadas para el volumen. Solo válido cuando
volumeType
esGP3
. Para más información, consulte Volúmenes SSD de propósito general (gp3) .ROOT_VOLUME_KEY con el nombre de recurso de Amazon de la clave AWS KMS que cifra los volúmenes raíz de la instancia del plano de control.
ETCD_VOLUME_SIZE : el tamaño de los volúmenes utilizados por etcd.
ETCD_VOLUME_TYPE con el tipo de volumen EBS . Por ejemplo,
gp3
.ETCD_VOLUME_IOPS con la cantidad de operaciones de E/S por segundo (IOPS) aprovisionadas para el volumen. Solo válido cuando
volumeType
esgp3
. Para más información, consulte Volúmenes SSD de propósito general (gp3) .ETCD_VOLUME_KEY con el nombre de recurso de Amazon de la clave AWS KMS que cifra los volúmenes de datos etcd del plano de control.
ARN_OF_KMS_KEY : la clave AWS KMS utilizada para cifrar los secretos del clúster.
ANTHOS_CONNECT_NAME : el nombre de membresía de Connect usado para registrar su clúster. El nombre de membresía debe ser único. Por ejemplo,
projects/ YOUR_PROJECT /locations/global/memberships/ CLUSTER_NAME
, dondeYOUR_PROJECT
es su Google Cloud Proyecto yCLUSTER_NAME
es un nombre único en el proyecto. Este campo es opcional.YOUR_PROJECT : su ID de proyecto.
GCP_REGION : el Google Cloud Región donde desea almacenar registros. Elija una región cercana a la región de AWS. Para obtener más información, consulte Ubicaciones globales - Regiones y zonas ; por ejemplo,
us-central1
.ENABLE_LOGGING :
true
ofalse
, si el registro en la nube está habilitado en los nodos del plano de control.ENABLE_MONITORING :
true
ofalse
, si Cloud Monitoring está habilitado en los nodos del plano de control.WORKLOAD_IDENTITY_BUCKET : El nombre del bucket de Cloud Storage que contiene la información de descubrimiento de la identidad de la carga de trabajo . Este campo es opcional.
Cree uno o más AWSNodePools para su clúster. Abra un editor de texto y copie la siguiente definición de AWSCluster en un archivo llamado
custom-nodepools.yaml
.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSNodePool metadata: name: NODE_POOL_NAME spec: clusterName: AWSCLUSTER_NAME version: CLUSTER_VERSION # latest version is 1.25.5-gke.2100 region: AWS_REGION subnetID: AWS_SUBNET_ID minNodeCount: MINIMUM_NODE_COUNT maxNodeCount: MAXIMUM_NODE_COUNT maxPodsPerNode: MAXIMUM_PODS_PER_NODE_COUNT instanceType: AWS_NODE_TYPE keyName: KMS_KEY_PAIR_NAME iamInstanceProfile: NODE_IAM_PROFILE proxySecretName: PROXY_SECRET_NAME rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: VOLUME_TYPE # Optional iops: IOPS # Optional kmsKeyARN: NODE_VOLUME_KEY # Optional
Reemplace lo siguiente:
- NODE_POOL_NAME : un nombre único para su AWSNodePool.
- AWSCLUSTER_NAME : el nombre de su clúster de AWS. Por ejemplo,
staging-cluster
. - CLUSTER_VERSION : una versión compatible de GKE en AWS Kubernetes.
- AWS_REGION : la misma región de AWS que su AWSCluster.
- AWS_SUBNET_ID : una subred de AWS en la misma región que su AWSCluster.
- MINIMUM_NODE_COUNT : el número mínimo de nodos en el grupo de nodos. Consulte Escalado de clústeres de usuarios para obtener más información.
- MAXIMUM_NODE_COUNT : el número máximo de nodos en el grupo de nodos.
- MAXIMUM_PODS_PER_NODE_COUNT : la cantidad máxima de pods que GKE en AWS puede asignar a un nodo.
- AWS_NODE_TYPE : un tipo de instancia de AWS EC2 .
- KMS_KEY_PAIR_NAME : el par de claves de AWS KMS asignado a cada trabajador del grupo de nodos.
- NODE_IAM_PROFILE : el nombre del perfil de instancia de AWS EC2 asignado a los nodos del grupo.
- ROOT_VOLUME_SIZE : el tamaño, en gibibytes (GiB), de los volúmenes raíz de su plano de control.
- VOLUME_TYPE : tipo de volumen de AWS EBS del nodo. Por ejemplo,
gp3
. - IOPS : cantidad de operaciones de E/S aprovisionadas por segundo (IOPS) para volúmenes. Solo válido cuando
volumeType
esgp3
. - NODE_VOLUME_KEY : ARN de la clave AWS KMS utilizada para cifrar el volumen. Para obtener más información, consulte "Uso de una CMK administrada por el cliente para cifrar volúmenes" .
Aplique los manifiestos a su servicio de gestión.
env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-cluster.yaml env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-nodepools.yaml
Crear un kubeconfig
Mientras se inicia el clúster de usuarios, puede crear un contexto kubeconfig
para el nuevo clúster. Este contexto se usa para autenticarse en un clúster de usuarios o de administración.
Utilice
anthos-gke aws clusters get-credentials
para generar unkubeconfig
para su clúster de usuarios en~/.kube/config
.env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Reemplace CLUSTER_NAME con el nombre de su clúster. Por ejemplo,
cluster-0
.Utilice
kubectl
para autenticarse en su nuevo clúster de usuarios.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
Si su clúster está listo, la salida incluye las URL de los componentes de Kubernetes dentro de su clúster.
Visualización del estado de su clúster
El servicio de administración aprovisiona recursos de AWS cuando aplica un AWSCluster
o AWSNodePool
.
Desde su directorio
anthos-aws
, useanthos-gke
para cambiar el contexto a su servicio de administración.cd anthos-aws anthos-gke aws management get-credentials
Para enumerar sus clústeres, utilice
kubectl get AWSClusters
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get AWSClusters
La salida incluye el nombre, el estado, la edad, la versión y el punto final de cada clúster.
Por ejemplo, la siguiente salida incluye solo un
AWSCluster
llamadocluster-0
:NAME STATE AGE VERSION ENDPOINT cluster-0 Provisioning 2m41s 1.25.5-gke.2100 gke-xyz.elb.us-east-1.amazonaws.com
Ver los eventos de su clúster
Para ver eventos recientes de Kubernetes de su clúster de usuarios, use kubectl get events
.
Desde su directorio
anthos-aws
, useanthos-gke
para cambiar el contexto a su servicio de administración.cd anthos-aws anthos-gke aws management get-credentials
Ejecute
kubectl get events
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get events
La salida incluye información, advertencias y errores relacionados con su servicio de administración.
Eliminar un clúster de usuarios
Para eliminar un clúster de usuarios, realice los siguientes pasos:
Desde su directorio
anthos-aws
, useanthos-gke
para cambiar el contexto a su servicio de administración.cd anthos-aws anthos-gke aws management get-credentials
Utilice
kubectl delete
para eliminar el manifiesto que contiene sus clústeres de usuarios.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f CLUSTER_FILE
Reemplace CLUSTER_FILE con el nombre del manifiesto que contiene los objetos AWScluster y AWSNodePool. Por ejemplo,
cluster-0.yaml
.
Eliminar todos los clústeres de usuarios
Para eliminar todos los clústeres de usuarios, realice los siguientes pasos:
Desde su directorio
anthos-aws
, useanthos-gke
para cambiar el contexto a su servicio de administración.cd anthos-aws anthos-gke aws management get-credentials
Utilice
kubectl delete
para eliminar sus AWSNodePools y AWSClusters de su servicio de administración.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSNodePool --all env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSCluster --all
Para obtener más información, consulte Desinstalación de GKE en AWS .
¿Qué sigue?
Configure su proveedor de identidad con el Servicio de identidad de GKE .
Inicie su primera carga de trabajo en GKE en AWS.
Cree una implementación externa utilizando un balanceador de carga o Ingress .
Lea las especificaciones para las definiciones de recursos personalizados AWSCluster y AWSNodePool .