Puedes reducir la cantidad de administración manual de la infraestructura en los clústeres de Google Kubernetes Engine (GKE) estándar si permites que GKE cree automáticamente grupos de nodos para los Pods pendientes. En este documento, se muestra cómo habilitar la creación automática de grupos de nodos para clústeres y cargas de trabajo, establecer valores predeterminados para los nodos creados automáticamente y activar la creación automática para algunos casos de uso comunes.
Este documento está dirigido a administradores, operadores y desarrolladores de clústeres que administran la infraestructura en clústeres Standard y, además, implementan cargas de trabajo en ellos. 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 del clúster), consulta Acerca de 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 escalador automático de clúster también se aplican a la creación automática de grupos de nodos.
- Los clústeres que tienen más de 200 grupos de nodos en total pueden tener una latencia mayor durante el ajuste de escala automático. 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 límites y prácticas recomendadas en "Planificación de clústeres grandes".
- Los límites de recursos que establezcas para el clúster cuando habilites el aprovisionamiento automático de nodos también se aplicarán a los grupos de nodos que GKE cree para las ComputeClasses.
- ComputeClasses no admite los siguientes parámetros de configuración:
- Actualizaciones de aumento o actualizaciones azul-verde
- Integridad del nodo y arranque seguro
- Para habilitar la creación automática de grupos de nodos para 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 del clúster. Esta limitación no se aplica a la versión 1.33.3-gke.1136000 de GKE ni a las versiones posteriores.
Antes de comenzar
Antes de comenzar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando
gcloud components update
para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.
Requisitos
Puedes habilitar la creación automática de grupos de nodos para todo tu clúster en cualquier versión de GKE con la función de aprovisionamiento automático de nodos. Si deseas usar un objeto ComputeClass para habilitar la creación automática de grupos de nodos a nivel de la carga de trabajo y no quieres habilitar el aprovisionamiento automático de nodos, tu clúster debe cumplir con los siguientes requisitos:
- Usa la versión 1.33.3-gke.1136000 de GKE o una posterior.
- Usa el canal de versiones rápido.
Para activar la creación automática de grupos de nodos para configuraciones de nodos específicas, debes cumplir con los requisitos de versión correspondientes. Para obtener más información sobre la compatibilidad de versiones para diferentes configuraciones, consulta las notas de la versión de GKE (funciones nuevas) o la documentación de tu caso de uso.
Habilita la creación automática a nivel de la carga de trabajo
Puedes habilitar la creación automática de grupos de nodos para cargas de trabajo específicas en el clúster con un objeto ComputeClass. El campo nodePoolAutoCreation
en una especificación de ComputeClass controla si GKE puede crear grupos de nodos nuevos para los Pods que seleccionan esa ComputeClass. En la versión 1.33.3-gke.1136000 de GKE y versiones posteriores, puedes habilitar la creación automática de grupos de nodos para una ComputeClass, incluso si el clúster no tiene habilitado el aprovisionamiento automático de nodos.
En las versiones anteriores a la 1.33.3-gke.1136000, también debes habilitar el aprovisionamiento automático de nodos a nivel del clúster.
Para habilitar la creación automática de grupos de nodos para una ComputeClass, sigue estos pasos:
Usa un clúster estándar nuevo o existente que cumpla con los siguientes requisitos:
- Usa la versión 1.33.3-gke.1136000 de GKE o una posterior.
- Usa el canal de versiones rápido.
De manera opcional, puedes crear un clúster estándar nuevo.
Si tu clúster no cumple con los requisitos del paso anterior, habilita el aprovisionamiento automático de nodos a nivel del clúster.
Guarda el siguiente ejemplo de ComputeClass como un archivo YAML:
apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n2 whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Reemplaza
COMPUTE_CLASS
por un nombre para 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
Reemplaza
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta de acceso al archivo de manifiesto de ComputeClass.Guarda el siguiente Deployment de ejemplo, 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 creó un grupo de nodos nuevo para tu Pod, obtén una lista de los grupos de nodos en tu clúster:
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION
Reemplaza lo siguiente:
CLUSTER_NAME
: El nombre de tu clúster.CONTROL_PLANE_LOCATION
: Es la región o zona del plano de control del clúster, comous-central1
ous-central1-a
.
Habilita el aprovisionamiento automático de nodos a nivel del clúster
Para habilitar la creación automática de grupos de nodos en todo tu clúster de GKE, usa el parámetro de configuración del aprovisionamiento automático de nodos. El aprovisionamiento automático de nodos permite que GKE cree grupos de nodos nuevos para cargas de trabajo pendientes en todo el clúster según la configuración de la especificación del Pod o de una ComputeClass. Puedes habilitar el aprovisionamiento automático de nodos para clústeres nuevos o existentes.
Antes de habilitar el aprovisionamiento automático de nodos, planifica el tamaño del rango de direcciones IPv4 principal de tu subred de VPC. GKE usa este rango de direcciones IP como el rango de direcciones IP del nodo principal. Según el tamaño y la escala de tu clúster, es posible que el rango de direcciones IP de nodo predeterminado no tenga suficientes direcciones IP para asignar a los nodos nuevos. Si actualizas el tamaño del rango de direcciones IP del nodo después de crear el clúster, debes actualizar las reglas del firewall del clúster de GKE para permitir el tráfico desde las direcciones IP nuevas.
Para obtener grupos de nodos creados automáticamente en versiones de GKE anteriores a la 1.33.3-gke.1136000, debes seguir los pasos que se indican en esta sección. También puedes habilitar el aprovisionamiento automático de nodos para un clúster existente. Para ello, edita la configuración del clúster en la consola de Google Cloud .
Para habilitar el aprovisionamiento automático de nodos cuando crees un clúster nuevo, selecciona una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página Crea un clúster de Kubernetes.
En la página Conceptos básicos del clúster, especifica un nombre y una ubicación para tu clúster nuevo.
En el menú de navegación, haz clic en Automation.
Selecciona la casilla de verificación Habilitar el aprovisionamiento automático de nodos. Aparecerá una sección Límites.
Especifica límites para la CPU y la 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
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster en el que se habilitará el aprovisionamiento automático de nodos.CONTROL_PLANE_LOCATION
: Es la región o zona del plano de control del clúster, comous-central1
ous-central1-a
.MINIMUM_CPU
es la cantidad mínima de núcleos en el clúster.MINIMUM_MEMORY
: Es la capacidad mínima de memoria, en GiB, en el clúster.MAXIMUM_CPU
es la cantidad máxima de núcleos en el clúster. Este límite se aplica a la suma de los núcleos de CPU en todos los nodos nuevos y existentes del clúster, incluidos los grupos de nodos creados manualmente.MAXIMUM_MEMORY
: Es la capacidad máxima de memoria, en GiB, en el clúster. Este límite se aplica a la suma de la capacidad de memoria de todos los grupos de nodos nuevos y existentes del clúster, incluidos los grupos de nodos creados manualmente.
Configura parámetros con un archivo de configuración de aprovisionamiento automático de nodos
Puedes configurar los límites de recursos y los parámetros de configuración de nodos para el aprovisionamiento automático de nodos con un archivo de configuración YAML. El archivo de configuración te permite especificar de forma declarativa los valores predeterminados para 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 cambio, el archivo de configuración existe como 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 del 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 Google Cloud CLI.
Agrega la configuración que deseas establecer 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, se utilizan los siguientes parámetros de configuración para el aprovisionamiento automático de nodos:
resourceLimits
: Establece límites de recursos para la CPU, la capacidad de memoria y las GPUs NVIDIA T4 en el 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 automática y la actualización automática de nodos para todos los grupos de nodos nuevos creados automáticamente en el clúster.shieldedInstanceConfig
: Habilita el inicio seguro y la supervisión de integridad de nodos para 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 existente:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clústerPATH_TO_CONFIGURATION_FILE
: Es la ruta de acceso al archivo de configuración.
Después de aplicar el archivo de configuración al clúster, GKE usa la configuración del archivo para los grupos de nodos nuevos creados automáticamente en el clúster. Estos parámetros de configuración no se aplican a los grupos de nodos existentes que GKE creó en el clúster.
Configura límites de recursos para el aprovisionamiento automático de nodos
Cuando usas el aprovisionamiento automático de nodos a nivel del 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, debes especificar límites para la capacidad de CPU y memoria en el clúster. Además, para usar otros tipos de recursos adjuntos, como GPU y TPU, debes especificar límites para esos recursos. Estos límites solo son obligatorios si habilitas el parámetro de configuración de aprovisionamiento automático de nodos para tu clúster. Si solo usas ComputeClasses para obtener grupos de nodos creados automáticamente, no necesitas configurar límites de recursos.
Puedes agregar o modificar los límites de recursos para la creación automática de grupos de nodos con uno de los siguientes métodos:
- La consola de Google Cloud
- Marcas de gcloud CLI
- El archivo de configuración a nivel del clúster
Para configurar los límites de recursos de un clúster existente, selecciona una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página de clústeres de Kubernetes.
Haz clic en el nombre del clúster. Se abrirá la página Detalles del clúster.
Haz 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.Selecciona la casilla de verificación Habilitar el aprovisionamiento automático de nodos.
En la sección Límites, especifica los valores mínimos y máximos para la capacidad de CPU y memoria en el clúster.
Para configurar límites para otro recurso, como GPUs o TPUs, haz lo siguiente:
- Haz clic en Agregar 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 para el recurso.
Opcional: En la sección Ubicaciones del grupo de nodos, selecciona zonas específicas para que GKE cree nodos. Por ejemplo, si planeas ejecutar cargas de trabajo de GPU, selecciona zonas que tengan alta disponibilidad para el tipo de GPU que seleccionaste.
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
Reemplaza lo siguiente:
MINIMUM_CPU
es la cantidad mínima de núcleos en el clúster.MINIMUM_MEMORY
: Es la capacidad mínima de memoria, en GiB, en el clúster.MAXIMUM_CPU
es la cantidad máxima de núcleos en el clúster. Este límite se aplica a la suma de los núcleos de CPU en todos los grupos de nodos del clúster, incluidos los grupos de nodos creados manualmente.MAXIMUM_MEMORY
: Es la capacidad máxima de memoria, en GiB, en el clúster. Este límite se aplica a la suma de la capacidad de memoria en 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
Reemplaza lo siguiente:
GPU_TYPE
: Es el tipo de GPU para el que se establecerá un límite, comonvidia-l4
.MINIMUM_GPU_COUNT
: Es la cantidad mínima de GPUs del tipo especificado que puede tener el clúster.MAXIMUM_GPU_COUNT
: Es la cantidad máxima 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
Reemplaza lo siguiente:
TPU_TYPE
: Es el tipo de TPU para el que se establecerá 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 comienzan conct5lp-
.tpu-v5p-slice
: TPU v5e con tipos de máquinas que comienzan conct5p-
.tpu-v6e-slice
: TPU Trillium.
MINIMUM_TPU_COUNT
: Es la cantidad mínima de chips TPU del tipo especificado que puede tener el clúster. Si el valor que especificas es mayor que la cantidad de chips TPU en una porción de TPU de varios hosts, es posible que tu porción de TPU no se reduzca.MAXIMUM_TPU_COUNT
: Es la cantidad máxima de chips TPU del tipo especificado que puede tener el clúster. En el caso de las porciones de TPU de varios hosts, especifica un valor mayor que la cantidad de chips en cada porción para que GKE pueda escalar la porción de forma atómica. La cantidad de chips en una porción es el producto de la topología de TPU. Por ejemplo, si la topología es2x2x2
, la cantidad de chips en la porción es8
, lo que significa que el valor de MAXIMUM_TPU_COUNT debe ser mayor que8
.
Archivo de configuración
En tu 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
Reemplaza lo siguiente:
MINIMUM_CPU
es la cantidad mínima de núcleos en el clúster.MINIMUM_MEMORY
: Es la capacidad mínima de memoria, en GiB, en el clúster.MAXIMUM_CPU
es la cantidad máxima de núcleos en el clúster. Este límite se aplica a la suma de los núcleos de CPU en todos los grupos de nodos del clúster, incluidos los grupos de nodos creados manualmente.MAXIMUM_MEMORY
: Es la capacidad máxima de memoria, en GiB, en el clúster. Este límite se aplica a la suma de la capacidad de memoria en 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
Reemplaza lo siguiente:
GPU1_TYPE
,GPU2_TYPE
: Son los tipos de GPU para los que se establecerán límites, comonvidia-l4
.MINIMUM_GPU1_COUNT
,MINIMUM_GPU2_COUNT
: Es la cantidad mínima de GPUs de los tipos especificados que puede tener el clúster.MAXIMUM_GPU1_COUNT
,MAXIMUM_GPU2_COUNT
: Es la cantidad máxima 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
Reemplaza lo siguiente:
TPU1_TYPE
,TPU2_TYPE
: Son los tipos de TPU para los que se establecerán límites. Se admiten los siguientes valores:tpu-v4-podslice
: TPU v4.tpu-v5-lite-podslice
: TPU v5e con tipos de máquinas que comienzan conct5lp-
.tpu-v5p-slice
: TPU v5e con tipos de máquinas que comienzan conct5p-
.tpu-v6e-slice
: TPU Trillium.
MINIMUM_TPU1_COUNT
,MINIMUM_TPU2_COUNT
: Es la cantidad mínima de chips TPU del tipo especificado que puede tener el clúster. Si el valor que especificas es mayor que la cantidad de chips TPU en una porción de TPU de varios hosts, es posible que tu porción de TPU no se reduzca.MAXIMUM_TPU1_COUNT
,MAXIMUM_TPU2_COUNT
: Es la cantidad máxima de chips TPU del tipo especificado que puede tener el clúster. Para las porciones de TPU de varios hosts, especifica un valor mayor que la cantidad de chips en cada porción para que GKE pueda escalar la porción de forma atómica. La cantidad de chips en una porción es el producto de la topología de TPU. Por ejemplo, si la topología deTPU1_TYPE
es2x2x2
, la cantidad de chips en 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 existente:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clústerPATH_TO_CONFIGURATION_FILE
: Es la ruta de acceso al archivo de configuración.
Marca los grupos de nodos existentes como creados automáticamente
Después de habilitar el aprovisionamiento automático de nodos a nivel del clúster, puedes marcar cualquier grupo de nodos existente en el clúster como creado automáticamente. GKE administra el ajuste de escala en estos grupos de nodos, lo que incluye borrar los grupos de nodos cuando están vacíos. Puedes marcar los grupos de nodos creados manualmente como creados automáticamente para permitir que GKE los administre por ti.
Si inhabilitas el aprovisionamiento automático para tu clúster, GKE dejará de administrar todos los grupos de nodos creados automáticamente existentes en el clúster. Si vuelves a habilitar el aprovisionamiento automático para el clúster más adelante, GKE no reanudará automáticamente la administración de esos grupos de nodos existentes. Debes marcar esos grupos de nodos existentes como creados automáticamente.
Para marcar un grupo de nodos existente 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
Reemplaza NODE_POOL_NAME
por el nombre del grupo de nodos.
Configura los parámetros predeterminados para 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 manera óptima tus Pods pendientes. De manera opcional, puedes configurar parámetros predeterminados que GKE aplica a los grupos de nodos creados automáticamente, como una cuenta de servicio personalizada de Identity and Access Management (IAM) para los nodos o configuraciones personalizadas de discos de arranque. Estos parámetros de configuración predeterminados anulan los valores predeterminados correspondientes que Google establece para tus clústeres. Por ejemplo, puedes establecer una imagen de nodo de Ubuntu como la predeterminada para los grupos de nodos creados automáticamente, lo que anula la imagen de nodo predeterminada de Container-Optimized OS de GKE.
Puedes configurar los parámetros de configuración predeterminados a nivel del clúster con el aprovisionamiento automático de nodos o a nivel de la carga de trabajo en ComputeClasses. Antes de configurar un parámetro en uno de estos niveles, ten en cuenta lo siguiente:
- La configuración a nivel del clúster se aplica a cualquier grupo de nodos creado automáticamente en el clúster, y la configuración de ComputeClass solo se aplica a las cargas de trabajo que usan esa ComputeClass.
- Si especificas el mismo parámetro de configuración predeterminado en un ComputeClass y a nivel del clúster, GKE usa el parámetro de configuración de ComputeClass para las cargas de trabajo que usan ComputeClass.
- Los valores predeterminados que configures solo se aplicarán a los grupos de nodos creados automáticamente nuevos. Los grupos de nodos existentes no se ven afectados.
En las siguientes secciones, se muestra cómo configurar parámetros de configuración predeterminados específicos.
Cómo establecer la imagen de nodo predeterminada
Selecciona una de las siguientes opciones:
ComputeClass
En un manifiesto de ComputeClass, usa el campo
nodePoolConfig.imageType
. Este campo está disponible en la versión 1.32.4-gke.1198000 de GKE y 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
Reemplaza
IMAGE_TYPE
por un valor para la imagen del nodo, que puede ser uno de los siguientes:cos_containerd
: Container-Optimized OS con containerdubuntu_containerd
: Ubuntu con containerd
Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Reemplaza
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta de acceso al archivo de manifiesto de ComputeClass.
gcloud
Para establecer 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
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clústerIMAGE_TYPE
: La imagen de nodo, que puede ser una de las siguientes:cos_containerd
: Container-Optimized OS con containerdubuntu_containerd
: Ubuntu con containerd
Para establecer 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 parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del 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 existente:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clústerPATH_TO_CONFIGURATION_FILE
: Es la ruta de acceso al archivo de configuración.
Cómo establecer la cuenta de servicio de IAM predeterminada para los nodos
Los nodos de GKE usan una cuenta de servicio de IAM para tareas del sistema, como el registro y la supervisió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 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
Reemplaza lo siguiente:
SERVICE_ACCOUNT_NAME
: Es el nombre de la cuenta de servicio de IAM, comomy-node-account
.PROJECT_ID
: Es el ID del proyecto de la cuenta de servicio.
Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Reemplaza
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta de acceso al archivo de manifiesto de ComputeClass.
gcloud
Cuando usas gcloud CLI para configurar una cuenta de servicio predeterminada para los grupos de nodos creados automáticamente, también debes especificar los alcances de acceso que los grupos de nodos requieren para funcionar correctamente.
Para establecer la cuenta de servicio predeterminada y los niveles 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
Reemplaza lo siguiente:
SERVICE_ACCOUNT_NAME
: Es el nombre de la cuenta de servicio de IAM, comomy-node-account
.PROJECT_ID
: Es el ID del proyecto de la cuenta de servicio.
Para establecer la cuenta de servicio y los permisos 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 parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del 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 existente:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clústerPATH_TO_CONFIGURATION_FILE
: Es la ruta de acceso al archivo de configuración.
Establece las zonas predeterminadas para los nodos creados automáticamente
De forma predeterminada, GKE crea nodos automáticamente en las siguientes zonas, según el 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 de forma manual una lista de zonas en las que GKE crea 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 en la región us-central1
para que GKE cree nodos automáticamente. Si modificas las zonas predeterminadas para los nodos creados automáticamente en un clúster existente, los cambios solo se aplicarán a los grupos de nodos nuevos que cree GKE.
Para especificar las zonas predeterminadas de los nodos creados automáticamente, selecciona una de las siguientes opciones:
ComputeClass
En un 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 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
Reemplaza
ZONE1,ZONE2,...
por una lista separada por comas de las zonas predeterminadas para los nodos creados automáticamente, como "us-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
Reemplaza
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta de acceso al archivo de manifiesto de ComputeClass.
gcloud
Para establecer 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,...
Reemplaza ZONE1,ZONE2,...
por una lista separada por comas de las zonas predeterminadas para los nodos creados automáticamente, como "us-central1-a','us-central1-b', 'us-central1-f'
".
Para establecer las zonas predeterminadas para la creación automática de grupos de nodos con un archivo de configuración, sigue estos pasos:
Especifica el campo
autoprovisioningLocations
en el archivo de configuración:autoprovisioningLocations: - ZONE1 - ZONE2
Reemplaza
ZONE1
,ZONE2
por las zonas predeterminadas para los nodos creados automáticamente, como "us-central1-a
" y "us-central1-b
".Si tu archivo de configuración tiene otros parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del 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 existente:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clústerPATH_TO_CONFIGURATION_FILE
: Es la ruta de acceso al archivo de configuración.
Establece claves de encriptación administradas por el cliente para la encriptación del disco de arranque
Puedes especificar una clave de encriptación administrada por el cliente (CMEK) en Cloud Key Management Service que GKE usa para encriptar los discos de arranque de los nodos en 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 establecer una CMEK para los discos de arranque de tus nodos, selecciona una de las siguientes opciones:
ComputeClass
En ComputeClasses, debes especificar la clave en cada regla de prioridad en el campo spec.priorities
de ComputeClass.
En un 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
Reemplaza lo siguiente:
KEY_PROJECT_ID
: ID del proyecto que tiene la clave.KEY_LOCATION
: Es la ubicación del llavero de claves.KEY_RING
: el nombre del llavero de claves que incluye la claveKEY_NAME
: el nombre de la clave.
Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Reemplaza
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta de acceso 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
Reemplaza lo siguiente:
KEY_PROJECT_ID
: ID del proyecto que tiene la clave.KEY_LOCATION
: Es la ubicación del llavero de claves.KEY_RING
: el nombre del llavero de claves que incluye la claveKEY_NAME
: el nombre de la clave.
Si tu archivo de configuración tiene otros parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del 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 existente:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clústerPATH_TO_CONFIGURATION_FILE
: Es la ruta de acceso al archivo de configuración.
Configura la integridad del nodo y el inicio seguro
Solo puedes habilitar el inicio seguro y la supervisión de integridad para los grupos de nodos creados automáticamente con el archivo de configuración del 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 parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del 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 existente:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clústerPATH_TO_CONFIGURATION_FILE
: Es la ruta de acceso al archivo de configuración.
Configura la reparación y la actualización automáticas de nodos
Puedes modificar la configuración de la reparación automática de nodos y la actualización automática 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 confiabilidad y la estabilidad de tus clústeres.
Para cambiar la configuración de reparación y actualización automáticas de 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 y posteriores de GKE.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
Reemplaza
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta de acceso al archivo de manifiesto de ComputeClass.
gcloud
Para habilitar la configuración 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 la configuración 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 la configuración de la reparación y la actualización automáticas de nodos con 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 parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del 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 existente:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clústerPATH_TO_CONFIGURATION_FILE
: Es la ruta de acceso al archivo de configuración.
Configura los parámetros de la actualización de aumento
Puedes especificar la configuración de actualización de aumento 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 actualización de aumento, debes configurar el aprovisionamiento automático de nodos a nivel del clúster.
Para especificar la configuración de actualización de aumento 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
Reemplaza lo siguiente:
MAX_SURGE
es la cantidad máxima de nodos que se pueden agregar al grupo de nodos durante las actualizaciones.MAX_UNAVAILABLE
es la cantidad máxima de nodos del grupo de nodos que pueden no estar disponibles de forma simultánea durante las actualizaciones.
Para especificar la configuración de actualización de aumento con 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 parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del 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 existente:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clústerPATH_TO_CONFIGURATION_FILE
: Es la ruta de acceso al archivo de configuración.
La configuración de actualización de aumento que especifiques solo se aplicará si tu clúster usa actualizaciones de aumento para actualizar los grupos de nodos creados automáticamente. Para cambiar la estrategia de actualización de nodos a actualizaciones de aumento para los grupos de nodos nuevos 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 cualquier parámetro de configuración que hayas establecido anteriormente para esa estrategia de actualización.
Usa actualizaciones azul-verde para grupos de nodos nuevos creados automáticamente
Puedes cambiar tu estrategia de actualización de nodos a actualizaciones azul-verde para todos los grupos de nodos nuevos creados automáticamente y ajustar la configuración predeterminada para las actualizaciones azul-verde. Para cambiar tu estrategia de actualización, debes configurar el aprovisionamiento automático de nodos a nivel del clúster. Los cambios que realices solo se aplicarán a los grupos de nodos nuevos creados automáticamente. También puedes actualizar los grupos de nodos existentes creados automáticamente para usar actualizaciones azul-verde.
Para usar las actualizaciones azul-verde y la configuración predeterminada de GKE para los grupos de nodos nuevos 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 actualizaciones azul-verde y configurar tus propios parámetros de configuración predeterminados para los grupos de nodos nuevos 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
Reemplaza lo siguiente:
NODE_POOL_SOAK_DURATION
: Es la duración, en segundos, que GKE espera después de vaciar todos los lotes de nodos en el grupo azul antes de borrarlo. El valor predeterminado es3600
.BATCH_NODE_COUNT
: Es la cantidad de nodos que se vaciarán en un lote durante la fase de vaciado del grupo azul. El valor predeterminado es1
. Si especificas un valor de0
, GKE omite la fase de vaciado del grupo azul.BATCH_SOAK_DURATION
: Es la duración, en segundos, que GKE espera para iniciar una operación de vaciado de lotes después de que se completa la operación de vaciado anterior. El valor predeterminado es0
.
Configura 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 en un grupo de nodos creado automáticamente, selecciona 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
Reemplaza lo siguiente:
BOOT_DISK_TYPE
: Es 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 usa para esa regla de prioridad. El valor debe ser uno de los siguientes:pd-balanced
: Persistent Disk balanceado.pd-standard
: Persistent Disk estándar.pd-ssd
: Es un Persistent Disk de rendimiento (SSD).hyperdisk-balanced
: Hyperdisk Balanced de Google Cloud.
BOOT_DISK_SIZE
: Es el tamaño del disco de arranque del nodo, expresado en GiB. El valor mínimo es10
.
Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Reemplaza
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta de acceso 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
Reemplaza lo siguiente:
BOOT_DISK_TYPE
: Es 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 usa para esa regla de prioridad. El valor debe ser uno de los siguientes:pd-balanced
: Persistent Disk balanceado.pd-standard
: Persistent Disk estándar.pd-ssd
: Es un Persistent Disk de rendimiento (SSD).hyperdisk-balanced
: Hyperdisk Balanced de Google Cloud.
BOOT_DISK_SIZE
: Es el tamaño del disco de arranque del nodo, expresado en GiB. El valor mínimo es10
.
Si tu archivo de configuración tiene otros parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del 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 existente:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clústerPATH_TO_CONFIGURATION_FILE
: Es la ruta de acceso al archivo de configuración.
GKE reserva una parte del disco de arranque del nodo para la funcionalidad del sistema y el almacenamiento efímero. Para obtener más información, consulta Almacenamiento efímero respaldado por un disco de arranque de nodo.
Configura grupos de nodos creados automáticamente para situaciones comunes
En las siguientes secciones, se muestra cómo solicitar grupos de nodos creados automáticamente para ciertos casos de uso comunes de GKE. Para obtener más información sobre casos de uso adicionales y configuraciones admitidas, consulta la documentación de tu caso de uso específico.
Selecciona una serie o un tipo de máquina
Para seleccionar una serie o un tipo de máquina de Compute Engine compatibles, elige una de las siguientes opciones:
ComputeClass
En un manifiesto de ComputeClass, especifica cualquiera de los siguientes campos en el campo
spec.priorities
. Puedes 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
Reemplaza
MACHINE_SERIES
por un tipo de máquina 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
Reemplaza
MACHINE_TYPE
por un tipo de máquina de Compute Engine, comoc4-standard-96
. En la versión 1.33.2-gke.1111000 de GKE y versiones posteriores, también puedes especificar tipos de máquinas personalizados en este campo.
No puedes especificar el campo
machineFamily
y el campomachineType
en la misma regla de prioridad.Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Reemplaza
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta de acceso al archivo de manifiesto de ComputeClass.
Especificación del 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
Reemplaza
MACHINE_SERIES
por un tipo de máquina 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
Reemplaza
MACHINE_TYPE
por un tipo de máquina de Compute Engine en la serie de máquinas especificada. Por ejemplo, si especificasn4
paraMACHINE_SERIES
, puedes especificarn4-standard-80
paraMACHINE_TYPE
.En la versión 1.33.2-gke.1111000 de GKE, también puedes especificar tipos de máquinas personalizados en este campo.
Crea el Pod:
kubectl apply -f PATH_TO_POD_MANIFEST
Reemplaza
PATH_TO_POD_MANIFEST
por la ruta de acceso al manifiesto del Pod.
Selecciona GPU
Para solicitar GPU para los 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
Reemplaza lo siguiente:
GPU_TYPE
: el tipo de GPU que se adjuntará, comonvidia-l4
.GPU_COUNT
: Es la cantidad de GPUs que se deben adjuntar a cada nodo. Este valor debe ser de1
como mínimo.DRIVER_VERSION
: Es la versión del controlador de GPU que se instalará. Este 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
Reemplaza
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta de acceso 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
Especificación del Pod
Para seleccionar GPUs en las especificaciones de tu Pod, debes configurar el aprovisionamiento automático de nodos a nivel del clúster y establecer límites de recursos para ese tipo de GPU. Para configurar los límites de recursos de GPU y seleccionar GPUs en tus Pods, sigue estos pasos:
- Configura los límites de recursos a nivel del clúster para las GPUs que deseas usar, como se describe en la sección Configura límites de recursos para la creación automática de grupos de nodos.
Selecciona GPUs con 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
Reemplaza lo siguiente:
GPU_TYPE
: el tipo de GPU que se adjuntará, comonvidia-l4
.GPU_COUNT
: Es la cantidad de GPUs que se deben adjuntar a cada nodo. Este valor debe ser de1
como mínimo.DRIVER_VERSION
: Es la versión del controlador de GPU que se instalará. Este valor debe serdefault
olatest
: En la versión 1.32.2-gke.1297000 y posteriores de GKE, 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 Instala controladores con el aprovisionamiento automático de nodos con GPU.GPU_QUANTITY
: Es la cantidad de GPUs que se deben adjuntar al Pod. Este valor debe ser menor o igual que el valor deGPU_COUNT
.
Selecciona TPUs
Puedes solicitar TPU en las especificaciones de ComputeClasses o Pod. En esta sección, se supone que conoces la selección de Cloud TPU y que sabes el tipo, la topología y la cantidad de TPU que deseas usar. Los pasos que sigas dependerán de cómo selecciones las TPU:
- ComputeClasses: Consulta Aprovisiona TPUs con clases de procesamiento personalizadas.
- Especificación del pod:
- Configura los límites de recursos a nivel del clúster para las TPU que deseas usar, como se describe en la sección Configura 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, como se describe en Ejecuta tu carga de trabajo en nodos de segmentación de TPU.
Limita el tiempo de ejecución de los nodos creados automáticamente
Puedes especificar una duración máxima después de la cual GKE finaliza los nodos creados automáticamente. A este límite de tiempo se aplican las restricciones de Compute Engine.
Selecciona una de las siguientes opciones:
ComputeClass
En un 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 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
Reemplaza
MAX_RUN_DURATION
por el tiempo, en segundos, que pueden ejecutarse los nodos creados automáticamente antes de que GKE los finalice.Aplica el manifiesto de ComputeClass al clúster:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Reemplaza
PATH_TO_COMPUTECLASS_MANIFEST
por la ruta de acceso al archivo de manifiesto de ComputeClass.
Especificación del Pod
En el manifiesto del 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 la versión 1.31.2-gke.1518000 de GKE 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
Reemplaza
MAX_RUN_DURATION
por el tiempo, en segundos, que pueden ejecutarse los nodos creados automáticamente antes de que GKE los finalice.Crea el Pod:
kubectl apply -f PATH_TO_POD_MANIFEST
Reemplaza
PATH_TO_POD_MANIFEST
por la ruta de acceso al manifiesto del Pod.
Especifica 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 la carga de trabajo (recomendado) o a nivel del clúster.
Inhabilita la creación automática de grupos de nodos
En las siguientes secciones, se muestra cómo inhabilitar la creación automática de grupos de nodos para grupos de nodos específicos o para todo el clúster. También puedes inhabilitar la creación automática de grupos de nodos en una ComputeClass especificando un valor de false
en el campo nodePoolAutoCreation.enabled
de la ComputeClass. Sin embargo, no recomendamos inhabilitar la creación automática de ComputeClasses, ya que esta es una de las principales ventajas de ComputeClasses, que te permite usar funciones como la migración activa y las prioridades de respaldo.
Inhabilita la creación automática para grupos de nodos específicos
Puedes impedir que GKE administre los nodos en los grupos de nodos existentes creados automáticamente. Esta acción tiene los siguientes efectos:
- El escalador automático del clúster deja de crear o borrar nodos en ese grupo de nodos. Si deseas que GKE ajuste la escala de los nodos automáticamente, puedes habilitar el escalador automático del clúster para ese grupo de nodos por separado.
- GKE no borra el grupo de nodos cuando la cantidad de nodos es cero.
- GKE sigue colocando los Pods pendientes en los nodos existentes de ese grupo de nodos que tienen disponibilidad. Si el aprovisionamiento automático de nodos sigue habilitado para el clúster, GKE también puede crear grupos de nodos nuevos 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
Inhabilita el aprovisionamiento automático de nodos para el clúster
Puedes inhabilitar la creación automática de grupos de nodos para todo el clúster si inhabilitas el parámetro de configuración del clúster de aprovisionamiento automático de nodos. Esta acción tiene los siguientes efectos:
- El escalador automático del clúster deja de crear y borrar nodos en los grupos de nodos existentes creados automáticamente. Los grupos de nodos creados manualmente que usan el escalador automático del clúster no se ven afectados.
- GKE no crea automáticamente grupos de nodos nuevos para las cargas de trabajo pendientes. Supervisa tu clúster para evitar que los Pods se queden atascados.
Si el clúster cumple con los siguientes requisitos, GKE seguirá creando grupos de nodos nuevos 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á inscrito en el canal de versiones rápido.
Si el clúster no cumple con estos requisitos, GKE no crea grupos de nodos nuevos para las ComputeClasses que habilitan la creación automática.
Si vuelves a habilitar el parámetro de configuración de aprovisionamiento automático de nodos a nivel del clúster más adelante, GKE no volverá a habilitar la creación automática de grupos de nodos en los grupos de nodos existentes. Debes marcar los grupos de nodos individuales como creados automáticamente.
Para inhabilitar el parámetro de configuración de aprovisionamiento automático de nodos a nivel del clúster, selecciona una de las siguientes opciones:
Console
En la consola de Google Cloud , accede a la página de los clústeres de Kubernetes.
Haz clic en el nombre del clúster que deseas modificar. Se abrirá la página Detalles del clúster.
Haz 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 de verificación 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
¿Qué sigue?
- Obtén más información sobre el escalador automático de clústeres.
- Más información sobre los grupos de nodos
- Obtén más información sobre las estrategias de actualización de nodos.