En este documento, se explica cómo crear un clúster de Kubernetes estándar en una zona aislada de Google Distributed Cloud (GDC). Un clúster estándar proporciona un clúster de Kubernetes con alcance de proyecto y altamente configurable que incluye un conjunto mínimo de servicios administrados incluidos. El clúster estándar ofrece más flexibilidad para la configuración del servicio que el clúster compartido, pero también requiere más sobrecarga de administración. Para obtener más información sobre los clústeres estándar, consulta Configuraciones de clústeres de Kubernetes.
Los clústeres de Standard son un recurso zonal y no pueden abarcar varias zonas. Para operar clústeres en un universo multizona, debes crearlos de forma manual en cada zona.
Este documento está dirigido a públicos como desarrolladores de aplicaciones dentro del grupo de operadores de aplicaciones, que son responsables de administrar las cargas de trabajo de contenedores dentro de su organización. Para obtener más información, consulta Públicos de la documentación de GDC aislado.
Antes de comenzar
Para crear un clúster estándar, solicita los permisos necesarios y prepara tu entorno.
Solicita roles de IAM
Comunícate con el administrador de la organización de IAM para que te otorgue los siguientes roles:
- Administrador de IAM del proyecto (
project-iam-admin): Otorga a otros usuarios los roles necesarios para administrar el acceso dentro de los clústeres de Standard. - Administrador de clústeres estándar (
standard-cluster-admin): Crea clústeres estándar en el proyecto.
Estos roles están vinculados al espacio de nombres de tu proyecto.
Prepara el entorno
- Verifica que tengas la configuración adecuada para acceder a los clústeres de Standard y administrarlos. Para obtener más información, consulta Administra el acceso a los clústeres de Standard.
- Genera el archivo kubeconfig del servidor de la API zonal para alojar tu clúster.
Establece la variable de entorno
MANAGEMENT_API_SERVERen la ruta de acceso de kubeconfig. Para obtener más información, consulta Recursos del servidor de la API de administración zonal. - Revisa los límites del clúster para conocer las consideraciones de recursos.
Planifica el bloque CIDR del Pod
Para asignar el bloque CIDR de Pods del tamaño adecuado para tus cargas de trabajo, debes calcular la cantidad de direcciones IP que se requieren para tu clúster de Kubernetes antes de crearlo. La mayoría de los parámetros de red no se pueden cambiar después de crear el clúster.
Un clúster de Kubernetes sigue la lógica que se indica a continuación cuando asigna direcciones IP:
- Kubernetes asigna un bloque CIDR
/24que consta de 256 direcciones a cada uno de los nodos. Esta cantidad se ajusta al máximo predeterminado de 110 Pods por nodo para los clústeres de Kubernetes. - El tamaño del bloque CIDR asignado a un nodo depende de la cantidad máxima de Pods por valor de nodo.
- El bloque siempre contiene al menos el doble de direcciones que el número máximo de Pods por nodo.
Consulta el siguiente ejemplo para comprender cómo se calculó el valor predeterminado de Tamaño de la máscara por nodo= /24 para alojar 110 Pods:
Maximum pods per node = 110
Total number of IP addresses required = 2 * 110 = 220
Per node mask size = /24
Number of IP addresses in a /24 = 2(32 - 24) = 256
Determina la máscara de CIDR de Pods necesaria para configurar el clúster de Kubernetes en función de la cantidad de nodos requerida. Planifica las adiciones futuras de nodos al clúster mientras configuras el rango de CIDR:
Total number of nodes supported = 2(Per node mask size - pod CIDR mask)
Dado que hay un tamaño de máscara por nodo predeterminado= /24 , consulta la siguiente tabla que asigna la máscara de CIDR del Pod a la cantidad de nodos admitidos.
| Máscara de CIDR de Pod | Cálculo: 2(Tamaño de la máscara por nodo - Máscara CIDR) | Cantidad máxima de nodos admitidos, incluidos los nodos del plano de control |
|---|---|---|
| /21 | 2(24 - 21) | 8 |
| /20 | 2(24-20) | 16 |
| /19 | 2(24 - 19) | 32 |
| /18 | 2(24 - 18) | 64 |
Después de calcular el bloque CIDR de Pods para tu clúster de Kubernetes, configúralo como parte del flujo de trabajo de creación del clúster en la siguiente sección.
Crea un clúster estándar
Para crear un clúster estándar, completa los siguientes pasos:
Console
En el selector de proyectos, elige tu proyecto.
Los clústeres de Standard son recursos con alcance de proyecto. Si, en cambio, seleccionas una organización, crearás un clúster compartido, que tiene alcance de organización. Para obtener más información, consulta la jerarquía de recursos.
En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
Haz clic en Crear clúster.
En el campo Nombre, especifica un nombre para el clúster.
Selecciona la zona en la que deseas crear el clúster.
Selecciona la versión de Kubernetes para el clúster.
Haz clic en Siguiente.
Establece la configuración de red de tu clúster. No puedes cambiar esta configuración de red después de crear el clúster. El único protocolo de Internet admitido de forma predeterminada para los clústeres de Kubernetes es el protocolo de Internet versión 4 (IPv4).
Si deseas crear nodos de balanceador de cargas dedicados, ingresa la cantidad de nodos que se crearán. De forma predeterminada, recibes cero nodos y el tráfico del balanceador de cargas se ejecuta a través de los nodos del plano de control.
Selecciona el CIDR de Service (enrutamiento entre dominios sin clases) que usarás. A los servicios implementados, como los balanceadores de cargas, se les asignan direcciones IP de este rango.
Selecciona el CIDR del Pod que deseas usar. El clúster asigna direcciones IP de este rango a tus Pods y VMs.
Haz clic en Siguiente.
Revisa los detalles del grupo de nodos predeterminado generado de forma automática para el clúster. Haz clic en edit Editar para modificar el grupo de nodos predeterminado.
Para crear grupos de nodos adicionales, selecciona Agregar grupo de nodos. Cuando editas el grupo de nodos predeterminado o agregas uno nuevo, lo personalizas con las siguientes opciones:
- Asigna un nombre para el grupo de nodos. No puedes modificar el nombre después de crear el grupo de nodos.
- Especifica la cantidad de nodos trabajadores que se crearán en el grupo de nodos.
Selecciona la clase de máquina que mejor se adapte a los requisitos de tu carga de trabajo. Consulta la lista de los siguientes parámetros de configuración:
- Tipo de máquina
- CPU
- Memoria
Haz clic en Guardar.
Haz clic en Crear para generar el clúster.
La creación de un clúster estándar puede tardar hasta 60 minutos en completarse.
API
Crea un recurso personalizado
Clustery guárdalo como un archivo YAML, comocluster.yaml:apiVersion: cluster.gdc.goog/v1 kind: Cluster metadata: name: CLUSTER_NAME namespace: PROJECT_NAME spec: clusterNetwork: podCIDRSize: POD_CIDR serviceCIDRSize: SERVICE_CIDR initialVersion: kubernetesVersion: KUBERNETES_VERSION nodePools: - machineTypeName: MACHINE_TYPE name: NODE_POOL_NAME nodeCount: NUMBER_OF_WORKER_NODES taints: TAINTS labels: LABELS acceleratorOptions: gpuPartitionScheme: GPU_PARTITION_SCHEME releaseChannel: channel: UNSPECIFIEDReemplaza lo siguiente:
CLUSTER_NAME: el nombre del clúster El nombre del clúster no debe terminar con-system. El sufijo-systemestá reservado para los clústeres creados por GDC.PROJECT_NAME: Es el nombre del proyecto en el que se creará el clúster.POD_CIDR: Es el tamaño de los rangos de red desde los que se asignan las direcciones IP virtuales de los Pods. Si no se establece, se usa un valor predeterminado21.SERVICE_CIDR: el tamaño de los rangos de red desde los que se asignan las direcciones IP virtuales de servicio. Si no se establece, se usa un valor predeterminado23.KUBERNETES_VERSION: Es la versión de Kubernetes del clúster, como1.26.5-gke.2100. Para enumerar las versiones de Kubernetes disponibles que se pueden configurar, consulta Enumera las versiones de Kubernetes disponibles para un clúster.MACHINE_TYPE: Es el tipo de máquina para los nodos trabajadores del grupo de nodos. Consulta los tipos de máquinas disponibles para ver qué se puede configurar.NODE_POOL_NAME: el nombre del grupo de nodosNUMBER_OF_WORKER_NODES: Es la cantidad de nodos trabajadores que se aprovisionarán en el grupo de nodos.TAINTS: Son los taints que se aplicarán a los nodos de este grupo de nodos. Este paso es opcional.LABELS: Son las etiquetas que se aplicarán a los nodos de este grupo de nodos. Contiene una lista de pares clave-valor. Este campo es opcional.GPU_PARTITION_SCHEME: Es el esquema de partición de GPU, si ejecutas cargas de trabajo de GPU. Este paso es opcional. Por ejemplo,mixed-2La GPU no se particiona si no se configura este campo. Para obtener más información sobre los perfiles de GPU de instancias múltiples (MIG) disponibles, consulta Perfiles de MIG compatibles.
Aplica el recurso personalizado a tu instancia de GDC:
kubectl apply -f cluster.yaml --kubeconfig MANAGEMENT_API_SERVERReemplaza
MANAGEMENT_API_SERVERpor la ruta de acceso de kubeconfig del servidor de la API zonal. Si aún no generaste un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta Accede.
La creación de un clúster estándar puede tardar hasta 60 minutos en completarse.
Terraform
En un archivo de configuración de Terraform, inserta el siguiente fragmento de código:
provider "kubernetes" { config_path = "MANAGEMENT_API_SERVER" } resource "kubernetes_manifest" "cluster-create" { manifest = { "apiVersion" = "cluster.gdc.goog/v1" "kind" = "Cluster" "metadata" = { "name" = "CLUSTER_NAME" "namespace" = "PROJECT_NAME" } "spec" = { "clusterNetwork" = { "podCIDRSize" = "POD_CIDR" "serviceCIDRSize" = "SERVICE_CIDR" } "initialVersion" = { "kubernetesVersion" = "KUBERNETES_VERSION" } "nodePools" = [{ "machineTypeName" = "MACHINE_TYPE" "name" = "NODE_POOL_NAME" "nodeCount" = "NUMBER_OF_WORKER_NODES" "taints" = "TAINTS" "labels" = "LABELS" "acceleratorOptions" = { "gpuPartitionScheme" = "GPU_PARTITION_SCHEME" } }] "releaseChannel" = { "channel" = "UNSPECIFIED" } } } }Reemplaza lo siguiente:
MANAGEMENT_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API zonal. Si aún no generaste un archivo kubeconfig para el servidor de la API en la zona de destino, consulta Accede.CLUSTER_NAME: el nombre del clúster El nombre del clúster no debe terminar con-system. El sufijo-systemestá reservado para los clústeres creados por GDC.PROJECT_NAME: Es el nombre del proyecto en el que se creará el clúster.POD_CIDR: Es el tamaño de los rangos de red desde los que se asignan las direcciones IP virtuales de los Pods. Si no se establece, se usa un valor predeterminado21.SERVICE_CIDR: el tamaño de los rangos de red desde los que se asignan las direcciones IP virtuales de servicio. Si no se establece, se usa un valor predeterminado23.KUBERNETES_VERSION: Es la versión de Kubernetes del clúster, como1.26.5-gke.2100. Para enumerar las versiones de Kubernetes disponibles que se pueden configurar, consulta Enumera las versiones de Kubernetes disponibles para un clúster.MACHINE_TYPE: Es el tipo de máquina para los nodos trabajadores del grupo de nodos. Consulta los tipos de máquinas disponibles para ver qué se puede configurar.NODE_POOL_NAME: el nombre del grupo de nodosNUMBER_OF_WORKER_NODES: Es la cantidad de nodos trabajadores que se aprovisionarán en el grupo de nodos.TAINTS: Son los taints que se aplicarán a los nodos de este grupo de nodos. Este paso es opcional.LABELS: Son las etiquetas que se aplicarán a los nodos de este grupo de nodos. Contiene una lista de pares clave-valor. Este campo es opcional.GPU_PARTITION_SCHEME: Es el esquema de partición de GPU, si ejecutas cargas de trabajo de GPU. Este paso es opcional. Por ejemplo,mixed-2La GPU no se particiona si no se configura este campo. Para obtener más información sobre los perfiles de GPU de instancias múltiples (MIG) disponibles, consulta Perfiles de MIG compatibles.
Aplica el nuevo clúster estándar con Terraform:
terraform apply
La creación de un clúster estándar puede tardar hasta 60 minutos en completarse.
¿Qué sigue?
- Administra el acceso a los clústeres estándar
- Implementa una app de contenedor con alta disponibilidad
- Cargas de trabajo de contenedores en GDC
- Jerarquía de recursos
- Configura Cloud NAT para clústeres estándar