Puedes reducir la cantidad de gestión manual de la infraestructura en los clústeres estándar de Google Kubernetes Engine (GKE) dejando que GKE cree automáticamente grupos de nodos para los pods pendientes. En este documento se explica cómo habilitar la creación automática de grupos de nodos para clústeres y cargas de trabajo, cómo definir valores predeterminados para los nodos creados automáticamente y cómo activar la creación automática en algunos casos de uso habituales.
Este documento está dirigido a administradores, operadores y desarrolladores de clústeres que gestionan la infraestructura y despliegan cargas de trabajo en clústeres estándar. Para obtener más información sobre cómo funciona la creación automática de grupos de nodos y los diferentes métodos de habilitación (como ComputeClasses y el aprovisionamiento automático de nodos a nivel de clúster), consulta Información sobre la creación automática de grupos de nodos.
Limitaciones
La creación automática de grupos de nodos tiene las siguientes limitaciones:
- Todas las limitaciones del autoescalador de clústeres también se aplican a la creación automática de grupos de nodos.
- Los clústeres que tengan más de 200 grupos de nodos en total pueden experimentar una mayor latencia durante el autoescalado. Cualquier configuración que active la creación de un grupo de nodos nuevo, como la separación de cargas de trabajo o el uso de varias ComputeClasses, aumenta este número. Para obtener más información sobre los límites de los clústeres, consulta los límites y las prácticas recomendadas en "Planificar clústeres grandes".
- Los límites de recursos que definas para el clúster al habilitar el aprovisionamiento automático de nodos también se aplican a los grupos de nodos que GKE crea para las clases de Compute.
- ComputeClasses no admite los siguientes ajustes:
- Actualizaciones de picos o actualizaciones azul-verde.
- Integridad de los nodos y arranque seguro.
- Para habilitar la creación automática de grupos de nodos en una ComputeClass en versiones de GKE anteriores a la 1.33.3-gke.1136000, también debes habilitar el aprovisionamiento automático de nodos a nivel de clúster. Esta limitación no se aplica en la versión 1.33.3-gke.1136000 de GKE ni en versiones posteriores.
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la CLI de gcloud, obtén la versión más reciente ejecutando el comando
gcloud components update
. Es posible que las versiones anteriores de la interfaz de línea de comandos de gcloud no admitan la ejecución de los comandos de este documento.
Requisitos
Puedes habilitar la creación automática de grupos de nodos en todo el clúster en cualquier versión de GKE mediante la función de aprovisionamiento automático de nodos. Si quieres usar una ComputeClass para habilitar la creación automática de grupos de nodos a nivel de carga de trabajo y no quieres habilitar el aprovisionamiento automático de nodos, tu clúster debe cumplir los siguientes requisitos:
- Usa la versión 1.33.3-gke.1136000 de GKE o una posterior.
- Usa el canal de lanzamiento rápido.
Para activar la creación automática de grupos de nodos con configuraciones de nodos específicas, debes cumplir los requisitos de versión correspondientes. Para obtener más información sobre la compatibilidad de versiones con varias configuraciones, consulta las notas de las versiones de GKE (nuevas funciones) o la documentación de tu caso práctico.
Habilitar la creación automática a nivel de carga de trabajo
Puedes habilitar la creación automática de grupos de nodos para cargas de trabajo específicas del clúster mediante una ComputeClass. El campo nodePoolAutoCreation
de una especificación de ComputeClass controla si GKE puede crear nuevos grupos de nodos para los pods que seleccionen ese ComputeClass. En la versión 1.33.3-gke.1136000 de GKE y posteriores, puedes habilitar la creación automática de grupos de nodos para una ComputeClass aunque el clúster no tenga habilitado el aprovisionamiento automático de nodos.
En versiones anteriores a la 1.33.3-gke.1136000, también debes habilitar el aprovisionamiento automático de nodos a nivel de clúster.
Para habilitar la creación automática de grupos de nodos en un ComputeClass, sigue estos pasos:
Usa un clúster estándar nuevo o ya creado que cumpla los siguientes requisitos:
- Usa la versión 1.33.3-gke.1136000 de GKE o una posterior.
- Usa el canal de lanzamiento rápido.
También puedes crear un clúster estándar.
Si tu clúster no cumple los requisitos del paso anterior, habilita el aprovisionamiento automático de nodos a nivel de clúster.
Guarda el siguiente ejemplo de ComputeClass como archivo YAML:
apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n2 whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Sustituye
COMPUTE_CLASS
por el nombre de la nueva ComputeClass. Para obtener más información sobre los campos disponibles en ComputeClasses, consulta la CustomResourceDefinition de ComputeClass.Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Sustituye
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta al archivo de manifiesto de ComputeClass.Guarda el siguiente ejemplo de Deployment, que selecciona un ComputeClass, como
helloweb-deploy.yaml
:Crea el Deployment en el clúster:
kubectl apply -f helloweb-deploy.yaml
Para verificar que GKE ha creado un grupo de nodos para tu pod, obtén una lista de los grupos de nodos de tu clúster:
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre de tu clúster.CONTROL_PLANE_LOCATION
: la región o zona del plano de control del clúster, comous-central1
ous-central1-a
.
Habilitar el aprovisionamiento automático de nodos a nivel de clúster
Para habilitar la creación automática de grupos de nodos en todo el clúster de GKE, usa el ajuste Aprovisionamiento automático de nodos. El aprovisionamiento automático de nodos permite a GKE crear nuevos grupos de nodos para cargas de trabajo pendientes en todo el clúster en función de la configuración de la especificación del pod o de una ComputeClass. Puedes habilitar el aprovisionamiento automático de nodos en clústeres nuevos o ya creados.
Antes de habilitar el aprovisionamiento automático de nodos, planifica el tamaño del intervalo de direcciones IPv4 principal de tu subred de VPC. GKE usa este intervalo de direcciones IP como intervalo de direcciones IP de nodo principal. En función del tamaño y la escala de tu clúster, es posible que el intervalo de direcciones IP de nodo predeterminado no tenga suficientes direcciones IP para asignar a los nodos nuevos. Si actualizas el tamaño del intervalo de direcciones IP de los nodos después de crear el clúster, debes actualizar las reglas de cortafuegos del clúster de GKE para permitir el tráfico de las nuevas direcciones IP.
Para obtener grupos de nodos creados automáticamente en versiones de GKE anteriores a la 1.33.3-gke.1136000, debes seguir los pasos de esta sección. También puedes habilitar el aprovisionamiento automático de nodos en un clúster que ya tengas. Para ello, edita la configuración del clúster en la Google Cloud consola.
Para habilitar el aprovisionamiento automático de nodos al crear un clúster, selecciona una de las siguientes opciones:
Consola
En la Google Cloud consola, ve a la página Crear un clúster de Kubernetes.
En la página Pasos básicos del clúster, especifica un nombre y una ubicación para el nuevo clúster.
En el menú de navegación, haz clic en Automatización.
Seleccione la casilla Habilitar aprovisionamiento automático de nodos. Aparecerá una sección Límites.
Especifica los límites de CPU y memoria.
Haz clic en Guardar cambios.
gcloud
gcloud container clusters create CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--min-cpu=MINIMUM_CPU \
--min-memory=MINIMUM_MEMORY \
--max-cpu=MAXIMUM_CPU \
--max-memory=MAXIMUM_MEMORY \
--autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster para habilitar el aprovisionamiento automático de nodos.CONTROL_PLANE_LOCATION
: la región o zona del plano de control del clúster, comous-central1
ous-central1-a
.MINIMUM_CPU
: número mínimo de núcleos del clúster.MINIMUM_MEMORY
: capacidad mínima de memoria, en GiB, del clúster.MAXIMUM_CPU
: número máximo de núcleos del clúster. Este límite se aplica a la suma de los núcleos de CPU de todos los nodos nuevos y actuales del clúster, incluidos los grupos de nodos creados manualmente.MAXIMUM_MEMORY
: capacidad máxima de memoria del clúster, en GiB. Este límite se aplica a la suma de la capacidad de memoria de todos los grupos de nodos nuevos y actuales del clúster, incluidos los grupos de nodos creados manualmente.
Configurar ajustes con un archivo de configuración de aprovisionamiento automático de nodos
Puedes configurar los límites de recursos y los ajustes de configuración de nodos para el aprovisionamiento automático de nodos mediante un archivo de configuración YAML. El archivo de configuración te permite especificar de forma declarativa los valores predeterminados de los grupos de nodos creados automáticamente y realizar configuraciones avanzadas, como habilitar la reparación automática de nodos. Este archivo no está relacionado con ComputeClasses, que son recursos personalizados de Kubernetes. En su lugar, el archivo de configuración es una alternativa más extensible al uso de marcas de línea de comandos para especificar la configuración del aprovisionamiento automático de nodos. Para obtener más información, consulta Configuración predeterminada a nivel de clúster con un archivo de configuración.
Para crear y usar un archivo de configuración, sigue estos pasos:
- En un editor de texto, crea un archivo YAML en una ruta a la que pueda acceder la CLI de Google Cloud.
Añade las configuraciones que quieras definir o modificar, como en el siguiente ejemplo:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 management: autoRepair: true autoUpgrade: true shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true
En este ejemplo, el aprovisionamiento automático de nodos tiene los siguientes ajustes:
resourceLimits
: define los límites de recursos para la CPU, la capacidad de memoria y las GPUs NVIDIA T4 del clúster. Estos límites se aplican a la suma de la capacidad de recursos del clúster, incluidos los grupos de nodos creados manualmente.management
: habilita la reparación y la actualización automáticas de nodos en todos los grupos de nodos creados automáticamente en el clúster.shieldedInstanceConfig
: habilita el arranque seguro y la monitorización de integridad de los nodos en todos los grupos de nodos creados automáticamente en el clúster.
Proporciona el archivo de configuración a GKE especificando la marca
--autoprovisioning-config-file
y la marca--enable-autoprovisioning
para un clúster nuevo o ya disponible:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.PATH_TO_CONFIGURATION_FILE
: la ruta al archivo de configuración.
Después de aplicar el archivo de configuración al clúster, GKE usa los ajustes del archivo para los grupos de nodos creados automáticamente en el clúster. Estos ajustes no se aplican a los grupos de nodos que GKE haya creado en el clúster.
Configurar límites de recursos para el aprovisionamiento automático de nodos
Cuando usas el aprovisionamiento automático de nodos a nivel de clúster, debes configurar límites para la cantidad total de recursos que puede tener tu clúster en todos sus grupos de nodos. Para habilitar el aprovisionamiento automático de nodos en un clúster, debe especificar los límites de capacidad de CPU y memoria del clúster. Además, para usar otros tipos de recursos adjuntos, como GPUs y TPUs, debes especificar límites para esos recursos. Estos límites solo son obligatorios si habilitas el ajuste de aprovisionamiento automático de nodos en tu clúster. Si solo usas ComputeClasses para obtener grupos de nodos creados automáticamente, no tienes que configurar límites de recursos.
Puedes añadir o modificar los límites de recursos para la creación automática de grupos de nodos mediante uno de los siguientes métodos:
- La Google Cloud consola
- Marcas de la CLI de gcloud
- El archivo de configuración a nivel de clúster
Para configurar los límites de recursos de un clúster, selecciona una de las siguientes opciones:
Consola
En la Google Cloud consola, ve a la página Clústeres de Kubernetes.
Haz clic en el nombre del clúster. Se abrirá la página Detalles del clúster.
Haga clic en la pestaña Detalles.
En la sección Automatización, en la fila Aprovisionamiento automático de nodos, haz clic en
Editar. Se abrirá el panel Editar aprovisionamiento automático de nodos.Seleccione la casilla Habilitar aprovisionamiento automático de nodos.
En la sección Límites, especifica los valores mínimo y máximo de la capacidad de CPU y de memoria del clúster.
Para configurar límites de otro recurso, como GPUs o TPUs, haz lo siguiente:
- Haz clic en Añadir recurso.
- En la lista desplegable Tipo de recurso, selecciona el modelo de GPU o el tipo de máquina de TPU, como NVIDIA A100 80 GB o ct5p.
- Especifica los valores mínimo y máximo del recurso.
Opcional: En la sección Ubicaciones del pool de nodos, selecciona zonas específicas para que GKE cree nodos. Por ejemplo, si tienes previsto ejecutar cargas de trabajo de GPU, selecciona zonas que tengan una alta disponibilidad para el tipo de GPU que hayas elegido.
Haz clic en Guardar cambios.
gcloud
Ejecuta uno de los siguientes comandos:
Especifica los límites de recursos de CPU y memoria:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY
Haz los cambios siguientes:
MINIMUM_CPU
: número mínimo de núcleos del clúster.MINIMUM_MEMORY
: capacidad mínima de memoria, en GiB, del clúster.MAXIMUM_CPU
: número máximo de núcleos del clúster. Este límite se aplica a la suma de los núcleos de CPU de todos los grupos de nodos del clúster, incluidos los grupos de nodos creados manualmente.MAXIMUM_MEMORY
: capacidad máxima de memoria del clúster, en GiB. Este límite se aplica a la suma de la capacidad de memoria de todos los grupos de nodos del clúster, incluidos los grupos de nodos creados manualmente.
Especifica los límites de recursos de GPU:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY \ --min-accelerator=type=GPU_TYPE,count=MINIMUM_GPU_COUNT \ --max-accelerator=type=GPU_TYPE,count=MAXIMUM_GPU_COUNT
Haz los cambios siguientes:
GPU_TYPE
: el tipo de GPU para el que se va a definir un límite, comonvidia-l4
.MINIMUM_GPU_COUNT
: el número mínimo de GPUs del tipo especificado que puede tener el clúster.MAXIMUM_GPU_COUNT
: número máximo de GPUs del tipo especificado que puede tener el clúster.
Especifica los límites de recursos de TPU:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY \ --min-accelerator=type=TPU_TYPE,count=MINIMUM_TPU_COUNT \ --max-accelerator=type=TPU_TYPE,count=MAXIMUM_TPU_COUNT
Haz los cambios siguientes:
TPU_TYPE
: el tipo de TPU para el que se va a definir un límite. Se admiten los siguientes valores:tpu-v4-podslice
: TPU v4.tpu-v5-lite-podslice
: TPU v5e con tipos de máquinas que empiezan porct5lp-
.tpu-v5p-slice
: TPU v5e con tipos de máquinas que empiezan porct5p-
.tpu-v6e-slice
: TPU Trillium.
MINIMUM_TPU_COUNT
: número mínimo de chips de TPU del tipo especificado que puede tener el clúster. Si el valor que especifica es mayor que el número de chips de TPU de un slice de TPU multihost, es posible que el slice de TPU no se reduzca.MAXIMUM_TPU_COUNT
: número máximo de chips de TPU del tipo especificado que puede tener el clúster. En el caso de las porciones de TPU de varios hosts, especifica un valor superior al número de chips de cada porción para que GKE pueda escalar la porción de forma atómica. El número de chips de un segmento es el producto de la topología de la TPU. Por ejemplo, si la topología es2x2x2
, el número de chips de la porción es8
, lo que significa que el valor de MAXIMUM_TPU_COUNT debe ser mayor que8
.
Archivo de configuración
En el archivo de configuración, especifica uno de los siguientes conjuntos de campos en el campo
resourceLimits
:Especifica los límites de recursos de CPU y memoria:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY
Haz los cambios siguientes:
MINIMUM_CPU
: número mínimo de núcleos del clúster.MINIMUM_MEMORY
: capacidad mínima de memoria, en GiB, del clúster.MAXIMUM_CPU
: número máximo de núcleos del clúster. Este límite se aplica a la suma de los núcleos de CPU de todos los grupos de nodos del clúster, incluidos los grupos de nodos creados manualmente.MAXIMUM_MEMORY
: capacidad máxima de memoria del clúster, en GiB. Este límite se aplica a la suma de la capacidad de memoria de todos los grupos de nodos del clúster, incluidos los grupos de nodos creados manualmente.
Especifica los límites de recursos de GPU:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY - resourceType: 'GPU1_TYPE' minimum: MINIMUM_GPU1_COUNT maximum: MAXIMUM_GPU1_COUNT - resourceType: 'GPU2_TYPE' minimum: MINIMUM_GPU2_COUNT maximum: MAXIMUM_GPU2_COUNT
Haz los cambios siguientes:
GPU1_TYPE
yGPU2_TYPE
: los tipos de GPU para los que se van a definir límites, comonvidia-l4
.MINIMUM_GPU1_COUNT
,MINIMUM_GPU2_COUNT
: el número mínimo de GPUs de los tipos especificados que puede tener el clúster.MAXIMUM_GPU1_COUNT
,MAXIMUM_GPU2_COUNT
: el número máximo de GPUs de los tipos especificados que puede tener el clúster.
Especifica los límites de recursos de TPU:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY - resourceType: 'TPU1_TYPE' minimum: MINIMUM_TPU1_COUNT maximum: MAXIMUM_TPU1_COUNT - resourceType: 'TPU2_TYPE' minimum: MINIMUM_TPU2_COUNT maximum: MAXIMUM_TPU2_COUNT
Haz los cambios siguientes:
TPU1_TYPE
,TPU2_TYPE
: los tipos de TPU para los que se van a definir límites. Se admiten los siguientes valores:tpu-v4-podslice
: TPU v4.tpu-v5-lite-podslice
: TPU v5e con tipos de máquinas que empiezan porct5lp-
.tpu-v5p-slice
: TPU v5e con tipos de máquinas que empiezan porct5p-
.tpu-v6e-slice
: TPU Trillium.
MINIMUM_TPU1_COUNT
,MINIMUM_TPU2_COUNT
: el número mínimo de chips de TPU del tipo especificado que puede tener el clúster. Si el valor que especifiques es mayor que el número de chips de TPU de un segmento de TPU multihost, es posible que tu segmento de TPU no se reduzca.MAXIMUM_TPU1_COUNT
,MAXIMUM_TPU2_COUNT
: número máximo de chips de TPU del tipo especificado que puede tener el clúster. En el caso de las slices de TPU de varios hosts, especifica un valor superior al número de chips de cada slice para que GKE pueda escalar la slice de forma atómica. El número de chips de un segmento es el producto de la topología de la TPU. Por ejemplo, si la topología deTPU1_TYPE
es2x2x2
, el número de chips de la porción es8
, lo que significa que el valor deMAXIMUM_TPU1_COUNT
debe ser mayor que8
.
Proporciona el archivo de configuración a GKE especificando la marca
--autoprovisioning-config-file
y la marca--enable-autoprovisioning
para un clúster nuevo o ya disponible:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.PATH_TO_CONFIGURATION_FILE
: la ruta al archivo de configuración.
Marcar grupos de nodos como creados automáticamente
Después de habilitar el aprovisionamiento automático de nodos a nivel de clúster, puedes marcar cualquier grupo de nodos del clúster como creado automáticamente. GKE gestiona el escalado de estos grupos de nodos, incluida la eliminación de los grupos de nodos cuando están vacíos. Puedes marcar los grupos de nodos creados manualmente como creados automáticamente para que GKE los gestione por ti.
Si inhabilitas el aprovisionamiento automático en tu clúster, GKE dejará de gestionar todos los grupos de nodos creados automáticamente en el clúster. Si vuelves a habilitar el aprovisionamiento automático del clúster más adelante, GKE no reanudará automáticamente la gestión de esos grupos de nodos. Debes marcar esos grupos de nodos como creados automáticamente.
Para marcar un grupo de nodos como creado automáticamente, ejecuta el siguiente comando:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning
Sustituye NODE_POOL_NAME
por el nombre del grupo de nodos.
Configurar los ajustes predeterminados de los grupos de nodos creados automáticamente
GKE usa tus ComputeClasses y especificaciones de Pod para determinar los tipos de nodos que pueden ejecutar de forma óptima tus Pods pendientes. También puedes configurar ajustes predeterminados que GKE aplique a los grupos de nodos creados automáticamente, como una cuenta de servicio de gestión de identidades y accesos (IAM) personalizada para los nodos o configuraciones de disco de arranque personalizadas. Estos ajustes predeterminados anulan los valores predeterminados correspondientes que Google haya definido para tus clústeres. Por ejemplo, puedes definir una imagen de nodo de Ubuntu como predeterminada para los grupos de nodos creados automáticamente, lo que anula la imagen de nodo predeterminada de Container-Optimized OS de GKE.
Puede configurar los ajustes predeterminados a nivel de clúster mediante el aprovisionamiento automático de nodos o a nivel de carga de trabajo en ComputeClasses. Antes de configurar un ajuste en uno de estos niveles, ten en cuenta lo siguiente:
- Los ajustes a nivel de clúster se aplican a cualquier grupo de nodos creado automáticamente en el clúster, mientras que los ajustes de ComputeClass solo se aplican a las cargas de trabajo que usan esa ComputeClass.
- Si especificas el mismo ajuste predeterminado en un ComputeClass y en el nivel del clúster, GKE usará el ajuste de ComputeClass para las cargas de trabajo que usen ComputeClass.
- Los valores predeterminados que configure solo se aplicarán a los grupos de nodos creados automáticamente nuevos. Los grupos de nodos que ya tengas no se verán afectados.
En las siguientes secciones se explica cómo configurar ajustes predeterminados específicos.
Definir la imagen de nodo predeterminada
Selecciona una de las opciones siguientes:
ComputeClass
En un archivo de manifiesto de ComputeClass, usa el campo
nodePoolConfig.imageType
. Este campo está disponible en la versión 1.32.4-gke.1198000 de GKE y en versiones posteriores.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n4d nodePoolConfig: imageType: IMAGE_TYPE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Sustituye
IMAGE_TYPE
por un valor de la imagen del nodo, que puede ser uno de los siguientes:cos_containerd
: Container-Optimized OS con containerd.ubuntu_containerd
: Ubuntu con containerd.
Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Sustituye
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta al archivo de manifiesto de ComputeClass.
gcloud
Para definir la imagen de nodo predeterminada en la línea de comandos, usa la marca
--autoprovisioning-image-type
:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-image-type=IMAGE_TYPE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.IMAGE_TYPE
: la imagen del nodo, que puede ser una de las siguientes:cos_containerd
: Container-Optimized OS con containerd.ubuntu_containerd
: Ubuntu con containerd.
Para definir la imagen de nodo predeterminada en un archivo de configuración, sigue estos pasos:
En el archivo de configuración, especifica el campo
imageType
:imageType: 'IMAGE_TYPE'
Si tu archivo de configuración tiene otros ajustes, no los modifiques. Las modificaciones o eliminaciones que se hagan en el archivo de configuración también se aplicarán a los ajustes correspondientes a nivel de clúster.
Proporciona el archivo de configuración a GKE especificando la marca
--autoprovisioning-config-file
y la marca--enable-autoprovisioning
para un clúster nuevo o ya disponible:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.PATH_TO_CONFIGURATION_FILE
: la ruta al archivo de configuración.
Definir la cuenta de servicio de gestión de identidades y accesos predeterminada para los nodos
Los nodos de GKE usan una cuenta de servicio de IAM para tareas del sistema, como el registro y la monitorización. Para cambiar la cuenta de servicio de IAM de los grupos de nodos creados automáticamente, selecciona una de las siguientes opciones:
ComputeClass
En un manifiesto de ComputeClass, usa el campo
nodePoolConfig.serviceAccount
. Este campo está disponible en la versión 1.31.4-gke.1072000 de GKE y en versiones posteriores.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n4d nodePoolConfig: serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Haz los cambios siguientes:
SERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicio de gestión de identidades y accesos, comomy-node-account
.PROJECT_ID
: el ID del proyecto de la cuenta de servicio.
Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Sustituye
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta al archivo de manifiesto de ComputeClass.
gcloud
Cuando usas la CLI de gcloud para configurar una cuenta de servicio predeterminada para grupos de nodos creados automáticamente, también debes especificar los ámbitos de acceso que necesitan los grupos de nodos para funcionar correctamente.
Para definir la cuenta de servicio predeterminada y los ámbitos de acceso en la línea de comandos, usa las marcas
--autoprovisioning-service-account
y
--autoprovisioning-scopes
:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
--autoprovisioning-scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
Haz los cambios siguientes:
SERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicio de gestión de identidades y accesos, comomy-node-account
.PROJECT_ID
: el ID del proyecto de la cuenta de servicio.
Para definir la cuenta de servicio y los ámbitos de acceso predeterminados en un archivo de configuración, sigue estos pasos:
En el archivo de configuración, especifica los campos
serviceAccount
yscopes
:serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com scopes: https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
Si tu archivo de configuración tiene otros ajustes, no los modifiques. Las modificaciones o eliminaciones que se hagan en el archivo de configuración también se aplicarán a los ajustes correspondientes a nivel de clúster.
Proporciona el archivo de configuración a GKE especificando la marca
--autoprovisioning-config-file
y la marca--enable-autoprovisioning
para un clúster nuevo o ya disponible:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.PATH_TO_CONFIGURATION_FILE
: la ruta al archivo de configuración.
Definir las zonas predeterminadas de los nodos creados automáticamente
De forma predeterminada, GKE crea automáticamente nodos en las siguientes zonas, en función del tipo de clúster:
- Clústeres regionales: GKE crea nodos en tres zonas aleatorias de la región del clúster.
- Clústeres zonales: GKE crea nodos en la misma zona que el plano de control del clúster.
Puedes especificar manualmente una lista de zonas en las que GKE cree nodos automáticamente. Estas zonas deben estar en la misma región que el plano de control del clúster. Por ejemplo, si tienes un clúster zonal con el plano de control en us-central1-a
, puedes especificar cualquier zona de la región us-central1
para que GKE cree nodos automáticamente. Si modificas las zonas predeterminadas de los nodos creados automáticamente en un clúster, los cambios solo se aplicarán a los grupos de nodos que cree GKE.
Para especificar las zonas predeterminadas de los nodos creados automáticamente, selecciona una de las siguientes opciones:
ComputeClass
En un archivo de manifiesto de ComputeClass, usa el campo
spec.priorityDefaults.location.zones
. Este campo está disponible en la versión 1.33.1-gke.1545000 de GKE y en versiones posteriores.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorityDefaults: location: zones: ['ZONE1','ZONE2','...'] priorities: - machineFamily: n4 - machineFamily: n4d whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Sustituye
ZONE1,ZONE2,...
por una lista separada por comas de las zonas predeterminadas de los nodos creados automáticamente, comous-central1-a','us-central1-b', 'us-central1-f'
. GKE usa estas zonas si las reglas específicas del campospec.priorities
no incluyen una lista explícita de zonas.Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Sustituye
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta al archivo de manifiesto de ComputeClass.
gcloud
Para definir las zonas predeterminadas para la creación automática de grupos de nodos en la línea de comandos, usa la marca --autoprovisioning-locations
:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-locations=ZONE1,ZONE2,...
Sustituye ZONE1,ZONE2,...
por una lista separada por comas de las zonas predeterminadas de los nodos creados automáticamente, como us-central1-a','us-central1-b', 'us-central1-f'
.
Para definir las zonas predeterminadas para la creación automática de grupos de nodos mediante un archivo de configuración, sigue estos pasos:
Especifica el campo
autoprovisioningLocations
en el archivo de configuración:autoprovisioningLocations: - ZONE1 - ZONE2
Sustituye
ZONE1
,ZONE2
por las zonas predeterminadas de los nodos creados automáticamente, como 'us-central1-a
' y 'us-central1-b
'.Si tu archivo de configuración tiene otros ajustes, no los modifiques. Las modificaciones o eliminaciones que se hagan en el archivo de configuración también se aplicarán a los ajustes correspondientes a nivel de clúster.
Proporciona el archivo de configuración a GKE especificando la marca
--autoprovisioning-config-file
y la marca--enable-autoprovisioning
para un clúster nuevo o ya disponible:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.PATH_TO_CONFIGURATION_FILE
: la ruta al archivo de configuración.
Definir claves de encriptado gestionadas por el cliente para el encriptado del disco de arranque
Puedes especificar una clave de cifrado gestionada por el cliente (CMEK) en Cloud Key Management Service que GKE usa para cifrar los discos de arranque de los nodos de los grupos de nodos creados automáticamente. Debes crear la clave antes de usarla con la creación automática de grupos de nodos. Para definir una CMEK para los discos de arranque de tu nodo, selecciona una de las siguientes opciones:
ComputeClass
En ComputeClasses, debes especificar la clave en cada regla de prioridad del campo spec.priorities
de ComputeClass.
En un archivo de manifiesto de ComputeClass, usa el campo
priorities.storage.bootDiskKMSKey
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 storage: bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME - machineFamily: n4d storage: bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Haz los cambios siguientes:
KEY_PROJECT_ID
: el ID del proyecto que tiene la clave.KEY_LOCATION
: la ubicación del conjunto de claves.KEY_RING
: el nombre del conjunto de claves que contiene la clave.KEY_NAME
: el nombre de la clave.
Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Sustituye
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta al archivo de manifiesto de ComputeClass.
gcloud
Especifica el campo
bootDiskKmsKey
en el archivo de configuración:bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Haz los cambios siguientes:
KEY_PROJECT_ID
: el ID del proyecto que tiene la clave.KEY_LOCATION
: la ubicación del conjunto de claves.KEY_RING
: el nombre del conjunto de claves que contiene la clave.KEY_NAME
: el nombre de la clave.
Si tu archivo de configuración tiene otros ajustes, no los modifiques. Las modificaciones o eliminaciones que se hagan en el archivo de configuración también se aplicarán a los ajustes correspondientes a nivel de clúster.
Proporciona el archivo de configuración a GKE especificando la marca
--autoprovisioning-config-file
y la marca--enable-autoprovisioning
para un clúster nuevo o ya disponible:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.PATH_TO_CONFIGURATION_FILE
: la ruta al archivo de configuración.
Configurar la integridad de los nodos y el arranque seguro
Solo puedes habilitar el arranque seguro y la monitorización de integridad en los grupos de nodos creados automáticamente mediante el archivo de configuración de aprovisionamiento automático de nodos.
Especifica el campo
shieldedInstanceConfig
en el archivo de configuración:shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true
Si tu archivo de configuración tiene otros ajustes, no los modifiques. Las modificaciones o eliminaciones que se hagan en el archivo de configuración también se aplicarán a los ajustes correspondientes a nivel de clúster.
Proporciona el archivo de configuración a GKE especificando la marca
--autoprovisioning-config-file
y la marca--enable-autoprovisioning
para un clúster nuevo o ya disponible:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.PATH_TO_CONFIGURATION_FILE
: la ruta al archivo de configuración.
Configurar la reparación y la actualización automáticas de nodos
Puedes modificar los ajustes de las reparaciones automáticas de nodos y las actualizaciones automáticas de nodos en los grupos de nodos creados automáticamente. Estas funciones están habilitadas de forma predeterminada en todos los clústeres y grupos de nodos de GKE. Te recomendamos que mantengas habilitadas estas funciones para mejorar la fiabilidad y la estabilidad de tus clústeres.
Para cambiar los ajustes de reparación y actualización automáticas de los nodos, selecciona una de las siguientes opciones:
ComputeClass
En un manifiesto de ComputeClass, usa el campo
autoRepair
y el campoautoUpgrade
en el campospec.nodePoolConfig
. Estos campos están disponibles en la versión 1.34.0-gke.2201000 de GKE y en versiones posteriores.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: nodePoolConfig: autoRepair: true autoUpgrade: true priorities: - machineFamily: n4 - machineFamily: n4d whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Sustituye
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta al archivo de manifiesto de ComputeClass.
gcloud
Para habilitar los ajustes de reparación y actualización automáticas en la línea de comandos, usa las marcas
--enable-autoprovisioning-autorepair
y--enable-autoprovisioning-autoupgrade
:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --enable-autoprovisioning-autorepair \ --enable-autoprovisioning-autoupgrade
Para inhabilitar los ajustes de reparación y actualización automáticas en la línea de comandos, usa las marcas
--no-enable-autoprovisioning-autorepair
y--no-enable-autoprovisioning-autoupgrade
:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --no-enable-autoprovisioning-autorepair \ --no-enable-autoprovisioning-autoupgrade
Para modificar los ajustes de reparación y actualización automáticas de los nodos mediante un archivo de configuración, sigue estos pasos:
Especifica los campos
management.autoRepair
ymanagement.autoUpgrade
en el archivo de configuración:management: autoRepair: true autoUpgrade: true
Si tu archivo de configuración tiene otros ajustes, no los modifiques. Las modificaciones o eliminaciones que se hagan en el archivo de configuración también se aplicarán a los ajustes correspondientes a nivel de clúster.
Proporciona el archivo de configuración a GKE especificando la marca
--autoprovisioning-config-file
y la marca--enable-autoprovisioning
para un clúster nuevo o ya disponible:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.PATH_TO_CONFIGURATION_FILE
: la ruta al archivo de configuración.
Configurar los ajustes de actualización de subidas
Puedes especificar los ajustes de actualización de picos en los grupos de nodos creados automáticamente. Las actualizaciones de aumento son la estrategia de actualización de nodos predeterminada de GKE. Para cambiar la configuración de las actualizaciones de picos de demanda, debes configurar el aprovisionamiento automático de nodos a nivel de clúster.
Para especificar los ajustes de actualización de picos en la línea de comandos, usa las marcas
--autoprovisioning-max-surge-upgrade
y--autoprovisioning-max-unavailable-upgrade
:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-max-surge-upgrade=MAX_SURGE \ --autoprovisioning-max-unavailable-upgrade=MAX_UNAVAILABLE
Haz los cambios siguientes:
MAX_SURGE
: número máximo de nodos que se pueden añadir al grupo de nodos durante las actualizaciones.MAX_UNAVAILABLE
: el número máximo de nodos del grupo de nodos que pueden no estar disponibles simultáneamente durante las actualizaciones.
Para especificar los ajustes de actualización de subidas de tensión mediante un archivo de configuración, sigue estos pasos:
Especifica los campos
upgradeSettings.maxSurgeUpgrade
yupgradeSettings.maxUnavailableUpgrade
en el archivo de configuración:upgradeSettings: maxSurgeUpgrade: MAX_SURGE maxUnavailableUpgrade: MAX_UNAVAILABLE
Si tu archivo de configuración tiene otros ajustes, no los modifiques. Las modificaciones o eliminaciones que se hagan en el archivo de configuración también se aplicarán a los ajustes correspondientes a nivel de clúster.
Proporciona el archivo de configuración a GKE especificando la marca
--autoprovisioning-config-file
y la marca--enable-autoprovisioning
para un clúster nuevo o ya disponible:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.PATH_TO_CONFIGURATION_FILE
: la ruta al archivo de configuración.
Los ajustes de actualización de picos que especifiques solo se aplicarán si tu clúster usa actualizaciones de picos para actualizar los grupos de nodos creados automáticamente. Para cambiar la estrategia de actualización de nodos a actualizaciones de picos en los grupos de nodos creados automáticamente, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--enable-autoprovisioning-surge-upgrade
Cuando cambias la estrategia de actualización, GKE usa los ajustes que hayas configurado previamente para esa estrategia.
Usar actualizaciones azul-verde en los grupos de nodos creados automáticamente
Puedes cambiar la estrategia de actualización de nodos a actualizaciones azul-verde para todos los grupos de nodos creados automáticamente y ajustar la configuración predeterminada de las actualizaciones azul-verde. Para cambiar tu estrategia de actualización, debes configurar el aprovisionamiento automático de nodos a nivel de clúster. Los cambios que hagas solo se aplicarán a los grupos de nodos creados automáticamente. También puedes actualizar los grupos de nodos creados automáticamente para usar las actualizaciones azul-verde.
Para usar las actualizaciones azul-verde y la configuración predeterminada de GKE en los grupos de nodos creados automáticamente, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade
Para usar las actualizaciones azul-verde y configurar tus propios ajustes predeterminados para los nuevos grupos de nodos creados automáticamente, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade \ --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \ --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION
Haz los cambios siguientes:
NODE_POOL_SOAK_DURATION
: la duración, en segundos, que espera GKE después de drenar todos los lotes de nodos del grupo azul antes de eliminarlo. El valor predeterminado es3600
.BATCH_NODE_COUNT
: número de nodos que se van a vaciar en un lote durante la fase de vaciado del grupo azul. El valor predeterminado es1
. Si especificas el valor0
, GKE se saltará la fase de drenaje del grupo azul.BATCH_SOAK_DURATION
: la duración, en segundos, que espera GKE para iniciar una operación de drenaje por lotes después de que se complete la operación de drenaje anterior. El valor predeterminado es0
.
Configurar discos de arranque de nodos personalizados
Para especificar el tipo y el tamaño de los discos de arranque que GKE adjunta a cada VM de nodo de un grupo de nodos creado automáticamente, seleccione una de las siguientes opciones:
ComputeClass
Usa los campos
bootDiskType
ybootDiskSize
en el campospec.priorities.storage
de un ComputeClass:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 storage: bootDiskType: BOOT_DISK_TYPE bootDiskSize: BOOT_DISK_SIZE - machineFamily: n4d storage: bootDiskType: BOOT_DISK_TYPE bootDiskSize: BOOT_DISK_SIZE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Haz los cambios siguientes:
BOOT_DISK_TYPE
: el tipo de disco que se usará como disco de arranque del nodo. El valor que especifiques debe ser compatible con el tipo de máquina de Compute Engine que GKE utilice para esa regla de prioridad. El valor debe ser uno de los siguientes:pd-balanced
: disco persistente balanceado.pd-standard
: disco persistente estándar.pd-ssd
: disco persistente de rendimiento (SSD).hyperdisk-balanced
: Google Cloud Hyperdisk Balanced.
BOOT_DISK_SIZE
: tamaño, en GiB, del disco de arranque del nodo. El valor mínimo es10
.
Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Sustituye
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta al archivo de manifiesto de ComputeClass.
gcloud
En el archivo de configuración, especifica los campos
diskSizeGb
ydiskType
:diskSizeGb: BOOT_DISK_SIZE diskType: BOOT_DISK_TYPE
Haz los cambios siguientes:
BOOT_DISK_TYPE
: el tipo de disco que se usará como disco de arranque del nodo. El valor que especifiques debe ser compatible con el tipo de máquina de Compute Engine que GKE utilice para esa regla de prioridad. El valor debe ser uno de los siguientes:pd-balanced
: disco persistente balanceado.pd-standard
: disco persistente estándar.pd-ssd
: disco persistente de rendimiento (SSD).hyperdisk-balanced
: Google Cloud Hyperdisk Balanced.
BOOT_DISK_SIZE
: tamaño, en GiB, del disco de arranque del nodo. El valor mínimo es10
.
Si tu archivo de configuración tiene otros ajustes, no los modifiques. Las modificaciones o eliminaciones que se hagan en el archivo de configuración también se aplicarán a los ajustes correspondientes a nivel de clúster.
Proporciona el archivo de configuración a GKE especificando la marca
--autoprovisioning-config-file
y la marca--enable-autoprovisioning
para un clúster nuevo o ya disponible:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.PATH_TO_CONFIGURATION_FILE
: la ruta al archivo de configuración.
GKE reserva una parte del disco de arranque del nodo para la funcionalidad del sistema y para el almacenamiento efímero. Para obtener más información, consulta Almacenamiento efímero respaldado por el disco de arranque del nodo.
Configurar grupos de nodos creados automáticamente para casos prácticos habituales
En las siguientes secciones se muestra cómo solicitar grupos de nodos creados automáticamente para determinados casos prácticos habituales de GKE. Para obtener más información sobre otros casos prácticos y configuraciones admitidas, consulta la documentación de tu caso práctico específico.
Seleccionar una serie o un tipo de máquina
Para seleccionar una serie o un tipo de máquina de Compute Engine admitidos, elige una de las siguientes opciones:
ComputeClass
En un manifiesto de ComputeClass, especifica uno de los siguientes campos en el campo
spec.priorities
. Puede especificar ambos campos en el mismo manifiesto de ComputeClass, pero no en la misma regla de prioridad.Para seleccionar una serie de máquinas, especifica el campo
machineFamily
en una regla de prioridad:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: MACHINE_SERIES whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Sustituye
MACHINE_SERIES
por una serie de máquinas de Compute Engine, comon4
.Para seleccionar un tipo de máquina, especifica el campo
machineType
en una regla de prioridad:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineType: MACHINE_TYPE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Sustituye
MACHINE_TYPE
por un tipo de máquina de Compute Engine, comoc4-standard-96
. En GKE 1.33.2-gke.1111000 y versiones posteriores, también puedes especificar tipos de máquinas personalizados en este campo.
No puedes especificar los campos
machineFamily
ymachineType
en la misma regla de prioridad.Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Sustituye
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta al archivo de manifiesto de ComputeClass.
Especificaciones de pod
En un manifiesto de Pod, selecciona una de las siguientes etiquetas de nodo:
Para seleccionar una serie de máquinas, usa la etiqueta de nodo
cloud.google.com/machine-family
:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Sustituye
MACHINE_SERIES
por una serie de máquinas de Compute Engine, comon4
.Para seleccionar un tipo de máquina predefinido, usa las etiquetas de nodo
cloud.google.com/machine-family
ynode.kubernetes.io/instance-type
:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES node.kubernetes.io/instance-type: MACHINE_TYPE containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Sustituye
MACHINE_TYPE
por un tipo de máquina de Compute Engine de la serie de máquinas especificada. Por ejemplo, si especificasn4
enMACHINE_SERIES
, puedes especificarn4-standard-80
enMACHINE_TYPE
.En la versión 1.33.2-gke.1111000 de GKE, también puedes especificar tipos de máquina personalizados en este campo.
Crea el Pod:
kubectl apply -f PATH_TO_POD_MANIFEST
Sustituye
PATH_TO_POD_MANIFEST
por la ruta al manifiesto de Pod.
Seleccionar GPUs
Para solicitar GPUs para grupos de nodos creados automáticamente, selecciona una de las siguientes opciones:
ComputeClass
En un manifiesto de ComputeClass, especifica el campo
spec.priorities.gpu
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - gpu: type: GPU_TYPE count: GPU_COUNT driverVersion: DRIVER_VERSION whenUnsatisfiable: DoNotScaleUp nodePoolAutoCreation: enabled: true
Haz los cambios siguientes:
GPU_TYPE
: el tipo de GPU que se va a asociar, comonvidia-l4
.GPU_COUNT
: número de GPUs que se van a asociar a cada nodo. Este valor debe ser1
como mínimo.DRIVER_VERSION
: la versión del controlador de la GPU que se va a instalar. El valor debe serdefault
olatest
. Este campo requiere la versión 1.31.1-gke.1858000 de GKE o una posterior.
Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Sustituye
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta al archivo de manifiesto de ComputeClass.Selecciona ComputeClass en una carga de trabajo de GPU, como en el siguiente ejemplo:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: nodeSelector: cloud.google.com/compute-class: nvidia-l4-class containers: - name: my-gpu-container image: nvidia/cuda:11.0.3-runtime-ubuntu20.04 command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: 1
Especificaciones de pod
Para seleccionar GPUs en las especificaciones de tu pod, debes configurar el aprovisionamiento automático de nodos a nivel de clúster y definir límites de recursos para ese tipo de GPU. Para configurar los límites de recursos de GPU y seleccionar las GPUs de tus pods, sigue estos pasos:
- Configura los límites de recursos a nivel de clúster para las GPUs que quieras usar, tal como se describe en la sección Configurar límites de recursos para la creación automática de grupos de nodos.
Selecciona GPUs mediante etiquetas de nodo en la especificación del pod:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: nodeSelector: cloud.google.com/gke-accelerator: GPU_TYPE cloud.google.com/gke-accelerator-count: GPU_COUNT cloud.google.com/gke-gpu-driver-version: DRIVER_VERSION containers: - name: my-gpu-container image: nvidia/cuda:11.0.3-runtime-ubuntu20.04 command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: GPU_QUANTITY
Haz los cambios siguientes:
GPU_TYPE
: el tipo de GPU que se va a asociar, comonvidia-l4
.GPU_COUNT
: número de GPUs que se van a asociar a cada nodo. Este valor debe ser1
como mínimo.DRIVER_VERSION
: la versión del controlador de la GPU que se va a instalar. El valor debe serdefault
olatest
. En la versión 1.32.2-gke.1297000 de GKE y posteriores, GKE instala automáticamente la versión del controladordefault
. Esta etiqueta de nodo requiere la versión 1.29.2-gke.1108000 de GKE o una posterior. Para obtener más información, consulta Instalar controladores mediante el aprovisionamiento automático de nodos con GPUs.GPU_QUANTITY
: número de GPUs que se van a asociar al pod. Este valor debe ser inferior o igual al valor deGPU_COUNT
.
Seleccionar TPUs
Puedes solicitar TPUs en especificaciones de ComputeClass o de Pod. En esta sección se da por hecho que conoces la selección de TPU de Cloud y que sabes el tipo, la topología y el número de TPU que quieres usar. Los pasos que debes seguir dependen de cómo selecciones las TPUs:
- ComputeClasses consulta Aprovisionar TPUs mediante clases de computación personalizadas.
- Especificación del pod:
- Configura los límites de recursos a nivel de clúster para las TPUs que quieras usar, tal como se describe en la sección Configurar límites de recursos para la creación automática de grupos de nodos.
- Configura los selectores y las solicitudes de recursos en las especificaciones de tu pod, tal como se describe en Ejecutar cargas de trabajo en nodos de segmento de TPU.
Limitar el tiempo de ejecución de los nodos creados automáticamente
Puedes especificar una duración máxima tras la cual GKE finalizará los nodos creados automáticamente. A este límite de tiempo se aplican las restricciones de Compute Engine.
Selecciona una de las opciones siguientes:
ComputeClass
En un archivo de manifiesto de ComputeClass, usa el campo
spec.priorities.maxRunDurationSeconds
. Este campo está disponible en la versión 1.32.1-gke.1159000 de GKE y en versiones posteriores.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machine-family: n4 maxRunDurationSeconds: MAX_RUN_DURATION whenUnsatisfiable: DoNotScaleUp nodePoolAutoCreation: enabled: true
Sustituye
MAX_RUN_DURATION
por el tiempo, en segundos, que pueden ejecutarse los nodos creados automáticamente antes de que GKE los termine.Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Sustituye
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta al archivo de manifiesto de ComputeClass.
Especificaciones de pod
En el manifiesto de tu pod, usa un selector de nodos para la etiqueta de nodo
cloud.google.com/gke-max-run-duration-seconds
. Esta etiqueta de nodo está disponible en GKE 1.31.2-gke.1518000 y versiones posteriores.apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: n4 cloud.google.com/gke-max-run-duration-seconds: MAX_RUN_DURATION containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Sustituye
MAX_RUN_DURATION
por el tiempo, en segundos, que pueden ejecutarse los nodos creados automáticamente antes de que GKE los termine.Crea el Pod:
kubectl apply -f PATH_TO_POD_MANIFEST
Sustituye
PATH_TO_POD_MANIFEST
por la ruta al manifiesto de Pod.
Especificar una plataforma de CPU mínima
El aprovisionamiento automático de nodos permite crear grupos de nodos con una plataforma de CPU mínima especificada. Puedes especificar la plataforma de CPU mínima a nivel de carga de trabajo (opción recomendada) o de clúster.
Inhabilitar la creación automática de grupos de nodos
En las siguientes secciones se explica cómo inhabilitar la creación automática de grupos de nodos en grupos de nodos específicos o en todo el clúster. También puedes inhabilitar la creación automática de grupos de nodos en una ComputeClass especificando el valor false
en el campo nodePoolAutoCreation.enabled
de la ComputeClass. Sin embargo, no te recomendamos que inhabilites la creación automática de ComputeClasses, ya que es una de las principales ventajas de ComputeClasses, que te permite usar funciones como la migración activa y las prioridades de fallback.
Inhabilitar la creación automática en grupos de nodos específicos
Puedes impedir que GKE gestione los nodos de los grupos de nodos creados automáticamente. Esta acción tiene los siguientes efectos:
- La herramienta de escalado automático de clústeres deja de crear o eliminar nodos en ese grupo de nodos. Si quieres que GKE ajuste la escala de los nodos automáticamente, puedes habilitar la herramienta de ajuste automático de escala del clúster para ese grupo de nodos por separado.
- GKE no elimina el grupo de nodos cuando el número de nodos es cero.
- GKE sigue colocando los pods pendientes en los nodos disponibles del grupo de nodos. Si el aprovisionamiento automático de nodos sigue habilitado en el clúster, GKE también puede crear grupos de nodos para los pods pendientes según sea necesario.
Para inhabilitar la creación automática de un grupo de nodos específico, ejecuta el siguiente comando:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--no-enable-autoprovisioning
Inhabilitar el aprovisionamiento automático de nodos en el clúster
Puedes inhabilitar la creación automática de grupos de nodos en todo el clúster si inhabilitas el ajuste de clúster de aprovisionamiento automático de nodos. Esta acción tiene los siguientes efectos:
- La herramienta de adaptación dinámica del clúster deja de crear y eliminar nodos en los grupos de nodos creados automáticamente. Los grupos de nodos creados manualmente que usen el autoescalador de clústeres no se verán afectados.
- GKE no crea automáticamente grupos de nodos para cargas de trabajo pendientes. Monitoriza tu clúster para evitar que los pods se queden bloqueados.
Si el clúster cumple los siguientes requisitos, GKE seguirá creando grupos de nodos para las ComputeClasses que habiliten la creación automática:
- Usa la versión 1.33.3-gke.1136000 de GKE o una posterior.
- Está registrado en el canal de lanzamiento rápido.
Si el clúster no cumple estos requisitos, GKE no creará grupos de nodos para las clases de Compute que habiliten la creación automática.
Si vuelves a habilitar el ajuste de aprovisionamiento automático de nodos a nivel de clúster más adelante, GKE no volverá a habilitar la creación automática de grupos de nodos en los grupos de nodos que ya tengas. Debes marcar grupos de nodos concretos como creados automáticamente.
Para inhabilitar el ajuste de aprovisionamiento automático de nodos a nivel de clúster, selecciona una de las siguientes opciones:
Consola
En la Google Cloud consola, ve a la página Clústeres de Kubernetes:
Haga clic en el nombre del clúster que quiera modificar. Se abrirá la página Detalles del clúster.
Haga clic en la pestaña Detalles.
En la sección Automatización, en la fila Aprovisionamiento automático de nodos, haz clic en Editar. Aparecerá el panel Editar aprovisionamiento automático de nodos.
Desmarca la casilla Habilitar aprovisionamiento automático de nodos.
Haz clic en Guardar cambios.
gcloud
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--no-enable-autoprovisioning
Siguientes pasos
- Más información sobre el autoescalador de clústeres
- Obtén más información sobre los grupos de nodos.
- Más información sobre las estrategias de actualización de nodos