Google Kubernetes Engine (GKE) puede crear y administrar automáticamente grupos de nodos en tus clústeres según la configuración de tus cargas de trabajo. En este documento, se describe cómo funciona la creación automática de grupos de nodos, los parámetros de ajuste de escala y el comportamiento predeterminado, y se proporcionan recomendaciones que pueden ayudarte a mejorar la escalabilidad. Este documento está dirigido a los administradores de clústeres que desean reducir los costos asociados con la administración manual de la infraestructura en sus clústeres en modo estándar.
Ya debes conocer los siguientes conceptos:
En el modo Autopilot, GKE siempre crea y administra nodos y grupos de nodos por ti en función de tus cargas de trabajo. No es necesario que configures manualmente la creación automática de grupos de nodos para los clústeres de Autopilot ni para las cargas de trabajo de Autopilot en los clústeres estándar. Para obtener más información, consulta la Descripción general de GKE Autopilot.
¿Qué es la creación automática de grupos de nodos?
En GKE, los grupos de nodos son grupos lógicos de nodos. Todos los nodos de un grupo de nodos tienen la misma configuración que todos los demás nodos de ese grupo. La creación automática de grupos de nodos es un mecanismo de ajuste de escala automático de la infraestructura que permite que GKE cree grupos de nodos nuevos en tu clúster que cumplan con los requisitos de tus cargas de trabajo. GKE administra estos grupos de nodos creados automáticamente y realiza tareas como actualizar los metadatos de los nodos, crear y borrar nodos en el grupo de nodos, y borrar todo el grupo de nodos cuando ya no es necesario. La creación automática de grupos de nodos es una extensión del escalador automático de clústeres de GKE, que escala automáticamente los nodos en grupos de nodos individuales.
La creación automática de grupos de nodos está diseñada para permitir que GKE reduzca verticalmente y quite automáticamente los grupos de nodos vacíos de tu clúster. No puedes establecer una cantidad mínima de nodos que debe tener cada grupo de nodos creado automáticamente, ya que una cantidad mínima mayor que cero impediría la eliminación de grupos de nodos vacíos. Si tu caso de uso requiere una cantidad mínima de nodos para que siempre se ejecuten en tu clúster, crea manualmente un grupo de nodos con el ajuste de escala automático habilitado.
Cómo funciona
La creación automática de grupos de nodos extiende el escalador automático de clúster de GKE para permitir que GKE aprovisione grupos de nodos nuevos que cumplan con los requisitos de hardware y las solicitudes de recursos de los Pods pendientes. Puedes definir tus requisitos de hardware de las siguientes maneras:
- Usa ComputeClasses, que luego seleccionas en varios Pods con un selector de nodos. Te recomendamos este método, ya que puedes definir de forma centralizada configuraciones de nodos comunes que pueden usar varias cargas de trabajo.
- Usa selectores de nodos o afinidad de nodos para solicitar etiquetas de nodos de GKE específicas en las especificaciones de Pods.
GKE configura grupos de nodos nuevos según parámetros como los siguientes:
- Solicitudes de recursos de CPU, memoria y almacenamiento efímero en tus Pods y contenedores, incluidos los Pods que administran los DaemonSets
- Solicitudes de GPU y TPU en especificaciones de Pods o en ComputeClasses
- Requisitos de hardware, como tipos de máquinas o tipos de discos de arranque, en las especificaciones de los Pods pendientes o en ComputeClasses
- Tolerancias en las especificaciones de los Pods pendientes que tienen selectores de nodos coincidentes
GKE configura la capacidad de recursos de cada nodo en un grupo de nodos creado automáticamente para que sea mayor o igual que las solicitudes de recursos de tus Pods pendientes. Debes asegurarte de que tus solicitudes de recursos sean lo suficientemente grandes para que el Pod funcione según lo previsto. Si las solicitudes de Pod son demasiado bajas, los Pods no se ejecutarán según lo previsto después de que GKE los programe en nodos creados automáticamente.
Configuración de metadatos del nodo
GKE también configura los metadatos de los nodos (como etiquetas, anotaciones y taint de nodos) según los requisitos de tu carga de trabajo, como en los siguientes ejemplos:
- Si solicitas la serie de máquinas N2, GKE agrega la etiqueta de nodo
cloud.google.com/machine-family: n2
a cada uno de los nodos. - Si seleccionas una ComputeClass en tu Pod, GKE agrega una etiqueta de nodo con la clave
cloud.google.com/compute-class
establecida en el nombre de esa ComputeClass. - Si tu Pod tiene una tolerancia y un selector de nodos para la misma etiqueta de nodo, GKE agrega taints de nodo para esas tolerancias a los nodos creados automáticamente.
Eliminación de grupos de nodos creados automáticamente
La creación automática de grupos de nodos permite que el escalador automático del clúster cree grupos de nodos y nodos nuevos para ejecutar los Pods pendientes entrantes. Si disminuye la cantidad de Pods en un grupo de nodos creado automáticamente, el escalador automático del clúster reduce gradualmente el grupo de nodos. Cuando es posible, GKE vacía los nodos poco utilizados en el grupo de nodos, consolida los Pods en otros nodos y quita los nodos vacíos.
Si la cantidad de nodos en un grupo de nodos creado automáticamente es cero, GKE borra ese grupo de nodos. GKE no borra los grupos de nodos que excluyes de la creación automática de grupos de nodos, como los grupos de nodos creados manualmente. Para obtener más información sobre cómo el escalador automático de clústeres reduce la escala de los grupos de nodos, consulta Cómo funciona el escalador automático de clústeres.
Preferencias de ajuste de escala de GKE
Las siguientes preferencias se aplican cuando GKE ajusta automáticamente la escala de tu infraestructura:
- Reducir el desperdicio de recursos de procesamiento: GKE usa la capacidad de recursos de los grupos de nodos existentes creados automáticamente en tu clúster para determinar el tipo de máquina que se usará para los grupos de nodos nuevos. A medida que aumenta el tamaño de tu clúster, GKE prefiere usar tipos de máquinas más grandes para los grupos de nodos nuevos, de modo que más de tus Pods puedan ejecutarse en cada nodo del grupo de nodos.
- Optimiza la escalabilidad y la latencia: GKE siempre prioriza la expansión de los grupos de nodos existentes y compatibles en lugar de crear grupos de nodos nuevos. La intensidad de esta preferencia aumenta a medida que aumenta la cantidad de grupos de nodos distintos en tu clúster. Cuando la cantidad de grupos de nodos distintos se acerca a los límites admitidos para una latencia y escalabilidad óptimas, GKE reduce la prioridad de la creación de grupos de nodos nuevos.
Estas prioridades ayudan a garantizar que tus clústeres tengan un uso eficiente de los recursos de procesamiento a gran escala, como en los siguientes ejemplos:
- En los clústeres que tienen una pequeña cantidad de grupos de nodos y un menor uso de recursos, GKE crea grupos de nodos nuevos con mayor frecuencia y usa tipos de máquinas más pequeños para esos grupos de nodos.
- En los clústeres que tienen una gran cantidad de grupos de nodos, el uso de recursos es alto. GKE crea grupos de nodos nuevos con menos frecuencia y usa tipos de máquinas más grandes para esos grupos de nodos, de modo que la programación de Pods pueda continuar y, al mismo tiempo, se ralentice el progreso hacia los límites de escalabilidad y latencia del clúster.
Puedes controlar manualmente el tamaño mínimo de las instancias que GKE usa para tus grupos de nodos creados automáticamente con un objeto ComputeClass que tenga el campo priorities.machineFamily
y el campo priorities.minCores
o el campo priorities.minMemoryGb
.
Métodos de habilitación para la creación automática de grupos de nodos
GKE puede crear automáticamente grupos de nodos para ComputeClasses específicas o para cualquier carga de trabajo que use una configuración compatible, según cómo configures tu clúster.
Métodos de habilitación | |
---|---|
A nivel de la carga de trabajo (recomendado) | En la versión 1.33.3-gke.1136000 y versiones posteriores de GKE, usa ComputeClasses para habilitar la creación automática de grupos de nodos sin usar el aprovisionamiento automático de nodos a nivel del clúster. GKE crea grupos de nodos nuevos solo para las cargas de trabajo que seleccionan ComputeClasses específicas que tienen habilitada la creación automática. Las cargas de trabajo existentes en el clúster no se ven afectadas. Incluso en versiones de GKE anteriores a la 1.33.3-gke.1136000, las ComputeClasses son la forma recomendada de solicitar y configurar la infraestructura para tus cargas de trabajo. Las ComputeClasses proporcionan capacidades únicas y te brindan una forma flexible de optimizar el ajuste de escala en tu clúster. Para obtener más información, consulta Acerca de las ComputeClasses personalizadas. |
Nivel de clúster | Habilita el aprovisionamiento automático de nodos para todo el clúster. Debes establecer límites para los recursos, como la CPU y la memoria, en tu clúster. Estos límites se aplican a todo el clúster. La configuración a nivel del clúster es necesaria para habilitar la creación automática de grupos de nodos en versiones de GKE anteriores a la 1.33.3-gke.1136000. GKE puede crear grupos de nodos nuevos para cualquier carga de trabajo pendiente en el clúster con ComputeClasses o selectores en las especificaciones de Pod. |
Estos métodos de configuración no son mutuamente excluyentes. Puedes usar ComputeClasses para crear automáticamente grupos de nodos en clústeres que usan el aprovisionamiento automático de nodos. Si usas ambos métodos para habilitar la creación automática de grupos de nodos en un clúster, GKE usa el siguiente orden de preferencia para encontrar el valor de un parámetro de configuración que se usará para un grupo de nodos:
- Especificación de ComputeClass o Pod: Si especificas un parámetro de configuración (como un tipo de máquina) en una ComputeClass o en una especificación de Pod, GKE usa ese parámetro de configuración.
- Valor predeterminado del aprovisionamiento automático de nodos a nivel del clúster: Si no se especifica un parámetro de configuración en una ComputeClass o en una especificación de Pod, GKE verifica si estableciste un valor predeterminado para el aprovisionamiento automático de nodos en el clúster. Si existe un valor predeterminado a nivel del clúster, GKE usa ese valor.
- Valor predeterminado a nivel del clúster: Si no se especifica un parámetro de configuración en ComputeClasses, en las especificaciones de Pod o como valor predeterminado para el aprovisionamiento automático de nodos a nivel del clúster, GKE usa el valor predeterminado que Google Cloud establece para el clúster.
Por ejemplo, considera una situación en la que GKE intenta encontrar un tipo de máquina para usar en un grupo de nodos creado automáticamente. El orden de preferencia anterior se aplica de la siguiente manera:
- GKE verifica si la especificación del Pod o su ComputeClass especifican un tipo de máquina.
- Si la especificación del Pod o ComputeClass no especifican un tipo de máquina, GKE verifica si estableciste un tipo de máquina predeterminado para el aprovisionamiento automático de nodos en el clúster.
- Si no estableciste un tipo de máquina predeterminado para el aprovisionamiento automático de nodos, GKE usará el tipo de máquina predeterminado del clúster.
En la mayoría de las situaciones, te recomendamos que solo uses el método de habilitación de ComputeClass. En las siguientes secciones, se proporcionan detalles sobre cada uno de estos métodos de configuración, incluidas las limitaciones y consideraciones.
Habilitación a nivel de la carga de trabajo con ComputeClasses
Puedes habilitar la creación automática de grupos de nodos para cualquier ComputeClass en tu clúster usando uno de los siguientes campos en la especificación de ComputeClass:
nodePoolAutoCreation
: Permite que GKE cree automáticamente grupos de nodos según sea necesario. Aún puedes interactuar con los grupos de nodos. GKE solo implementa los parámetros de configuración o las restricciones que estableces.autopilot
: Ejecuta las cargas de trabajo que seleccionan esta ComputeClass en el modo de Autopilot. Al igual que en un clúster de Autopilot, GKE administra completamente los nodos por ti y aplica varios parámetros de configuración y restricciones de Autopilot. Si usas el campoautopilot
, puedes omitir este documento. Para obtener más información, consulta Acerca de las cargas de trabajo del modo Autopilot en Standard.
En los clústeres que cumplen con los siguientes requisitos, puedes usar estos campos en un ComputeClass sin habilitar el aprovisionamiento automático de nodos a nivel del clúster:
- Usa la versión 1.33.3-gke.1136000 de GKE o una posterior.
- Estar inscritos en el canal de versiones rápido
Si configuras la creación automática de grupos de nodos en una ComputeClass sin habilitar el aprovisionamiento automático de nodos para el clúster, GKE creará grupos de nodos nuevos solo para las cargas de trabajo que usen la ComputeClass. Otras cargas de trabajo no se ven afectadas.
En el siguiente ejemplo de manifiesto de ComputeClass, se habilita la creación automática de grupos de nodos para cualquier Pod que use ComputeClass:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: example-computeclass
spec:
priorities:
- machineFamily: n4
- machineFamily: c4
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
Habilitación a nivel del clúster con aprovisionamiento automático de nodos
Para habilitar la creación automática de grupos de nodos en todo el clúster, habilita la función de aprovisionamiento automático de nodos para el clúster con la API de Google Kubernetes Engine. El aprovisionamiento automático de nodos permite que GKE cree grupos de nodos nuevos según sea necesario para cualquier carga de trabajo en el clúster en función de las especificaciones de Pod o las configuraciones de ComputeClass. GKE no administra ningún grupo de nodos existente en el clúster, pero puedes marcar grupos de nodos individuales como aprovisionados de forma automática después de habilitar el aprovisionamiento automático de nodos para el clúster.
Habilita el aprovisionamiento automático de nodos en situaciones como las siguientes:
- Deseas que GKE cree automáticamente grupos de nodos en un clúster que ejecute una versión de GKE anterior a la 1.33.3-gke.1136000.
Quieres establecer manualmente los límites de recursos en todo el clúster. En las versiones de GKE anteriores a 1.33.3-gke.1136000, debes establecer límites de recursos para todo el clúster, incluso si usas ComputeClasses.
Quieres usar funciones o configuraciones específicas que no son compatibles con ComputeClasses.
Quieres establecer valores predeterminados de configuración de nodos para todo el clúster.
Después de habilitar el aprovisionamiento automático de nodos, puedes configurar valores predeterminados para varios parámetros de configuración de nodos con Google Cloud CLI o un archivo de configuración YAML.
Límites de recursos a nivel del clúster con aprovisionamiento automático de nodos
Cuando habilitas el aprovisionamiento automático de nodos para todo un clúster, también debes configurar límites para los recursos, como CPU, memoria, GPU y TPU, en el clúster. Estos límites se aplican a la suma de toda la capacidad de recursos del clúster, incluidos los grupos de nodos y las ComputeClasses creados manualmente. GKE no crea nodos ni grupos de nodos nuevos si la operación supera uno de estos límites de recursos.
Estos límites de recursos a nivel del clúster solo son necesarios si habilitas el aprovisionamiento automático de nodos en el clúster. En los clústeres que cumplen con los siguientes requisitos, puedes usar la creación automática de grupos de nodos en ComputeClasses sin habilitar el aprovisionamiento automático de nodos:
- Usa la versión 1.33.3-gke.1136000 de GKE o una posterior.
- Estar inscritos en el canal de versiones rápido
Si tu clúster cumple con estos requisitos, te recomendamos que uses solo ComputeClasses para configurar los grupos de nodos creados automáticamente.
Configuración predeterminada para los grupos de nodos creados automáticamente
Puedes especificar valores predeterminados que GKE aplica a los grupos de nodos creados automáticamente a nivel de la carga de trabajo o del clúster.
- Configuración predeterminada a nivel de la carga de trabajo: Puedes usar los campos
spec.nodePoolConfig
yspec.priorityDefaults
en la especificación de ComputeClass para establecer valores predeterminados para parámetros de configuración de nodos específicos. Estos valores predeterminados solo se aplican a los grupos de nodos que GKE crea para esa ComputeClass. - Configuración predeterminada a nivel del clúster: Puedes establecer valores predeterminados para los grupos de nodos creados automáticamente cuando configuras el aprovisionamiento automático de nodos. Para especificar valores predeterminados, usa gcloud CLI o un archivo de configuración YAML.
Estos métodos para establecer valores predeterminados no son mutuamente excluyentes. Si configuras valores predeterminados para un parámetro de configuración específico en una ComputeClass y para todo el clúster, GKE usa el valor de la ComputeClass. Si ComputeClass no especifica un valor para ese parámetro de configuración, GKE usa el valor predeterminado a nivel del clúster.
Configuración predeterminada a nivel del clúster con un archivo de configuración
Cuando habilitas el aprovisionamiento automático de nodos, puedes usar un archivo de configuración YAML para especificar la configuración predeterminada en todo el clúster para los grupos de nodos creados automáticamente. Puedes especificar varios parámetros de configuración en un solo archivo de configuración. Algunas opciones de configuración avanzadas (como la configuración de reparación automática) solo se pueden especificar mediante un archivo de configuración.
El siguiente archivo de configuración de ejemplo habilita la reparación automática y la actualización automática de nodos para cualquier grupo de nodos nuevo creado automáticamente:
management: autoRepair: true autoUpgrade: true
En el siguiente archivo de configuración de ejemplo, se establecen los límites de recursos en todo el clúster para el aprovisionamiento automático de nodos y se configuran varios parámetros de configuración predeterminados:
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 diskSizeGb: 100
Este archivo de configuración establece los siguientes valores predeterminados:
- Habilita la reparación automática y la actualización automática de nodos para cualquier grupo de nodos nuevo creado automáticamente.
- Habilita el inicio seguro y la supervisión de integridad para cualquier grupo de nodos nuevo creado automáticamente.
- Establece el tamaño del disco de arranque en 100 GiB para cualquier grupo de nodos nuevo creado automáticamente.
Después de aplicar el archivo de configuración al clúster, GKE usa la configuración del archivo solo para los grupos de nodos nuevos creados automáticamente en el clúster. La configuración nueva o modificada que especifiques en el archivo no se aplica a los grupos de nodos existentes que GKE creó en el clúster. Si actualizas un valor que se había establecido previamente para el clúster, GKE usará el nuevo valor para todos los grupos de nodos nuevos. Por ejemplo, si antes estableciste la familia de máquinas predeterminada en N2 y actualizas el valor a N4 en tu archivo de configuración, todos los grupos de nodos nuevos usarán tipos de máquinas N4.
Para obtener más información sobre cómo usar el archivo de configuración a nivel del clúster, consulta Configura parámetros con un archivo de configuración de aprovisionamiento automático de nodos.
Casos de uso de la creación automática de grupos de nodos
En las siguientes secciones, se describen algunos casos de uso populares y el hardware compatible con la creación automática de grupos de nodos. Para obtener más información sobre los casos de uso adicionales y las configuraciones admitidas, consulta la documentación de tu caso de uso específico.
Selección de series o tipo de máquina
Puedes seleccionar una serie o un tipo de máquina de Compute Engine para que GKE los use en los grupos de nodos creados automáticamente de una de las siguientes maneras:
- ComputeClasses: Usa las reglas de prioridad
machineFamily
omachineType
. - Especificaciones del Pod: Para una serie de máquinas, usa un selector de nodos para la etiqueta de nodo
cloud.google.com/machine-family
. Para un tipo de máquina, usa las etiquetas de nodocloud.google.com/machine-family
ynode.kubernetes.io/instance-type
. Para obtener más información, consulta Cómo seleccionar una serie o un tipo de máquina.
Si no seleccionas una máquina de forma explícita, GKE usa la serie de máquinas E2 o un tipo de máquina compatible con el hardware que solicita tu carga de trabajo. Por ejemplo, GKE usa tipos de máquinas con GPU para las GPU y máquinas especializadas para los recursos de TPU.
Cuando solicites una serie o un tipo de máquina, asegúrate de que otros selectores de nodos y las solicitudes de recursos de tu Pod sean compatibles con la máquina especificada. Por ejemplo, no puedes solicitar una GPU y la serie de máquinas N2 al mismo tiempo.
Serie de máquinas compatible
Puedes solicitar de forma explícita cualquier serie de máquinas o tipo de máquina de Compute Engine compatibles en una ComputeClass o carga de trabajo. La creación automática de grupos de nodos solo admite las siguientes series de máquinas en versiones específicas de GKE:
- Serie de máquinas Z3: 1.29 y versiones posteriores
- Serie de máquinas C4:
- 1.28.15-gke.1159000 y versiones posteriores
- 1.29.10-gke.1227000 y versiones posteriores
- 1.30.3-gke.1225000 y versiones posteriores
- Serie de máquinas C4A:
- 1.28.15-gke.1344000 y versiones posteriores
- 1.29.11-gke.1012000 y versiones posteriores.
- 1.30.7-gke.1136000 y versiones posteriores
- 1.31.3-gke.1056000 y versiones posteriores
- Serie de máquinas C4D: 1.32.3-gke.1717000 y versiones posteriores
- Serie de máquinas N4: 1.29.3 y versiones posteriores
Otras series de máquinas son compatibles con todas las versiones de GKE.
Selección de GPU
Puedes solicitar GPUs para los grupos de nodos creados automáticamente de una de las siguientes maneras:
- ComputeClasses:
- Usa la regla de prioridad
gpu
para configurar las GPUs. - Solicita recursos de GPU en los Pods.
- Usa la regla de prioridad
- Especificaciones del pod:
- Configura los límites de GPU en todo el clúster para el aprovisionamiento automático de nodos.
- Usa selectores de nodos para configurar las GPUs.
- Solicita recursos de GPU en los Pods.
GKE selecciona un tipo de máquina con GPU que sea lo suficientemente grande como para admitir la cantidad de GPUs. La cantidad de GPUs que selecciones afectará la capacidad de CPU y memoria de los nodos.
Selección de Cloud TPU
Puedes solicitar recursos de Cloud TPU para grupos de nodos creados automáticamente de una de las siguientes maneras:
- ComputeClasses: Usa la regla de prioridad
tpu
para configurar las TPU. Luego, solicita la misma cantidad de recursos de TPU en los Pods. Para obtener más información, consulta Aprovisiona TPU con clases de procesamiento personalizadas. - Especificaciones del pod: Configura los límites de TPU para todo el clúster. Luego, usa selectores de nodos para configurar las TPU y solicitar recursos de TPU en los Pods. Para obtener más información, consulta Configura Cloud TPUs.
Tanto los grupos de nodos de porción de TPU de host único como los grupos de nodos de porción de TPU de varios hosts admiten el ajuste de escala automático y la creación automática de grupos de nodos. Para la creación automática de grupos de nodos, GKE crea grupos de nodos de porción de TPU de host único o multihost con una versión de TPU y una topología que cumplen con los requisitos de las cargas de trabajo pendientes.
Requisitos de la versión de GKE para Cloud TPU
La creación automática de grupos de nodos admite las siguientes Cloud TPU solo en versiones específicas de GKE:
- Cloud TPU v5p:
- 1.28.7-gke.1020000 y versiones posteriores
- 1.29.2-gke.1035000 y versiones posteriores
- TPU Trillium: 1.31.1-gke.1146000 y versiones posteriores
Otros tipos de Cloud TPU son compatibles con todas las versiones de GKE.
Ajuste de escala automático del grupo de nodos de Cloud TPU
GKE escala automáticamente los grupos de nodos de Cloud TPU creados de forma manual o automática que usan el escalador automático de clústeres de una de las siguientes maneras:
- Grupo de nodos de porción de TPU de host único: GKE agrega o quita nodos TPU en el grupo de nodos existente. El grupo de nodos puede contener cualquier cantidad de nodos TPU entre cero y el tamaño máximo del grupo de nodos según lo determinado por las marcas de ajuste de escala automático
--max-nodes
y--total-max-nodes
. Todos los nodos TPU del grupo de nodos tienen el mismo tipo de máquina y topología. Para obtener más información sobre cómo crear un grupo de nodos de porción de TPU de host único, consulta Crea un grupo de nodos. - Grupo de nodos de porción de TPU de varios hosts: GKE escala verticalmente el grupo de nodos de forma atómica desde cero hasta la cantidad de nodos necesarios para satisfacer la topología de TPU. Por ejemplo, con un grupo de nodo TPU que tiene el tipo de máquina
ct5lp-hightpu-4t
y una topología de16x16
, el grupo de nodos siempre tiene 64 nodos o cero nodos. GKE reduce la escala vertical del grupo de nodos si no hay cargas de trabajo de TPU en él. Para reducir la escala del grupo de nodos, GKE expulsa todos los Pods programados y quita todos los nodos del grupo de nodos. Para obtener más información sobre cómo crear un grupo de nodos de porción de TPU de varios hosts, consulta Crea un grupo de nodos.
Configuración del grupo de nodos de Cloud TPU
GKE usa la configuración de tu Pod o ComputeClass para determinar la configuración de tus nodos de TPU. El siguiente manifiesto es un ejemplo de una especificación de Deployment que solicita TPUs en la especificación de Pod. Si está habilitado el parámetro de configuración de aprovisionamiento automático de nodos a nivel del clúster, esta Deployment activa la creación automática del grupo de nodos. Cuando creas este ejemplo de Deployment, GKE crea un grupo de nodos que contiene una porción de TPU v4 con una topología de 2 x 2 x 2 y dos máquinas ct4p-hightpu-4t
.
apiVersion: apps/v1
kind: Deployment
metadata:
name: tpu-workload
labels:
app: tpu-workload
spec:
replicas: 2
selector:
matchLabels:
app: nginx-tpu
template:
metadata:
labels:
app: nginx-tpu
spec:
nodeSelector:
cloud.google.com/gke-tpu-accelerator: tpu-v4-podslice
cloud.google.com/gke-tpu-topology: 2x2x2
cloud.google.com/reservation-name: my-reservation
containers:
- name: nginx
image: nginx:1.14.2
resources:
requests:
google.com/tpu: 4
limits:
google.com/tpu: 4
ports:
- containerPort: 80
En este manifiesto, los siguientes campos definen la configuración de la TPU:
cloud.google.com/gke-tpu-accelerator
: La versión y el tipo de TPU. Por ejemplo, puedes usar cualquiera de las siguientes opciones:- TPU v4 con tpu-v4-podslice
- TPU v5e con tpu-v5-lite-podslice.
- TPU v5p con tpu-v5p-slice.
- TPU Trillium (v6e) con tpu-v6e-slice.
cloud.google.com/gke-tpu-topology
: Es la cantidad y la disposición física de los chips TPU dentro de una porción de TPU. Para obtener más información, consulta Elige una topología.limits.google.com/tpu
: Es la cantidad de chips TPU en la VM de TPU. La mayoría de las configuraciones tienen solo un valor correcto. Para obtener más información, consulta Cómo funcionan las TPU en GKE.cloud.google.com/reservation-name
: Es el nombre de la reserva de capacidad que se usará para obtener recursos de TPU. Si se omite, la carga de trabajo no usa ninguna reserva.
La configuración del grupo de nodos creado automáticamente depende del tipo de TPU, la topología de TPU y la cantidad de chips TPU que selecciones. Para predecir el tipo, el tamaño y la configuración de tu grupo de nodos, haz lo siguiente:
- En Elige una topología, filtra la tabla para Estándar para el tipo de TPU especificado, como TPU Trillium o TPU v5e.
- Usa los valores que especificaste para identificar la configuración del grupo de nodos, de la siguiente manera:
gke-tpu-topology
: Busca la fila en la tabla que tiene el mismo valor para Topology.limits
: En la tabla, divide el valor de Cantidad de chips TPU por el valor de Cantidad de VMs. Busca en la tabla la fila que tenga el mismo valor resultante que el valor que especificaste.
Por ejemplo, considera una situación en la que solicitaste tpu-v6e-slice
(TPU Trillium) con una topología 2x4
. En este caso, filtra la tabla en Elige una topología para TPU Trillium. Luego, identifica la fila que corresponde a la configuración especificada, de la siguiente manera:
gke-tpu-topology
: La TPU Trillium tiene las siguientes configuraciones para una topología de 2 x 4:- Un grupo de nodos de porción de TPU de host único que tiene ocho chips de TPU en una instancia de
ct6e-standard-8t
. - Un grupo de nodos de porción de TPU de varios hosts que tiene ocho chips de TPU distribuidos en dos instancias de
ct6e-standard-4t
.
- Un grupo de nodos de porción de TPU de host único que tiene ocho chips de TPU en una instancia de
limits
: Dado que la TPU Trillium tiene varias opciones para la topología 2x4, el valor que especifiques en el campolimits
dependerá del tipo de grupo de nodos que desees, de la siguiente manera:- Grupo de nodos de porción de TPU de host único: Especifica
limits.google.com/tpu: 8
para obtener un grupo de nodos que tenga ocho chips de TPU y una VM. Los ocho chips están conectados a esa VM. - Grupo de nodos de porción de TPU de varios hosts: Especifica
limits.google.com/tpu: 4
para obtener un grupo de nodos que tenga ocho chips de TPU y dos VMs. Cada VM tiene 4 chips.
- Grupo de nodos de porción de TPU de host único: Especifica
Selección de VM Spot
Puedes seleccionar VMs Spot para los grupos de nodos creados automáticamente de una de las siguientes maneras:
- ComputeClasses: Usa el campo
spot
en una regla de prioridad. - Especificaciones del Pod: Usa una tolerancia para la etiqueta de nodo
cloud.google.com/gke-spot="true"
con el efectoNoSchedule
. Agrega un selector de nodos para las etiquetas de nodocloud.google.com/gke-spot=true
ocloud.google.com/gke-provisioning=spot
. Como alternativa, puedes seleccionar VMs interrumpibles con la etiqueta de nodocloud.google.com/gke-preemptible
en tu tolerancia y selector de nodos. Sin embargo, te recomendamos que uses VMs Spot.
Configuración del almacenamiento efímero
GKE usa una parte del disco de arranque del nodo para el almacenamiento efímero de Pods. Puedes personalizar el tamaño del disco de arranque que GKE usa para los nodos creados automáticamente de una de las siguientes maneras:
- ComputeClasses: Usa los campos
storage.bootDiskSize
ystorage.bootDiskType
en una regla de prioridad. Puedes configurar diferentes parámetros de configuración del disco de arranque para diferentes ComputeClasses. - Especificaciones de Pod: Usa los campos
diskSizeGb
ydiskType
en el archivo de configuración a nivel del clúster. Con este método, no puedes controlar el tamaño y el tipo de disco de arranque para Pods individuales.
Para obtener más información, consulta Discos de arranque personalizados.
Si no modificas explícitamente la configuración del disco de arranque, el valor predeterminado es un volumen pd-balanced
con una capacidad de 100 GiB.
GKE crea un grupo de nodos nuevo solo si el almacenamiento efímero asignable de un nodo con un disco de arranque especificado es mayor o igual que la solicitud de almacenamiento efímero de un Pod pendiente. Si la solicitud de almacenamiento efímero es mayor que el almacenamiento efímero asignable de un nodo, GKE no creará un grupo de nodos nuevo y el Pod permanecerá en estado pendiente. GKE no ajusta de forma dinámica los tamaños de los discos de arranque según las solicitudes de almacenamiento efímero de tu Pod.
Separación de cargas de trabajo
Puedes solicitar que Pods específicos siempre se ejecuten en nodos separados de otros Pods del clúster. GKE usa taints de nodos para evitar que otras cargas de trabajo se ejecuten en esos nodos. Puedes configurar la separación de cargas de trabajo en los grupos de nodos creados automáticamente de las siguientes maneras:
- ComputeClasses: Los nodos que GKE crea para una ComputeClass específica solo pueden ejecutar Pods que seleccionen esa ComputeClass. No es necesario que modifiques las especificaciones de tus Pods. Puedes separar los Pods dentro de una ComputeClass con la afinidad y la antiafinidad entre Pods.
- Especificaciones de Pods: Si habilitas el aprovisionamiento automático de nodos para el clúster, puedes configurar la separación de cargas de trabajo con los campos de la especificación de Pods. Durante la creación automática de grupos de nodos, GKE podría crear grupos de nodos con etiquetas y taints si se cumplen todas las siguientes condiciones:
- El Pod usa un selector de nodos para solicitar una clave y un valor de etiqueta de nodo personalizados. No puedes usar etiquetas de nodos del sistema para la separación de cargas de trabajo.
- El Pod tiene una tolerancia para la misma clave de etiqueta del nodo.
- El efecto de tolerancia es
NoSchedule
,NoExecute
o no está especificado.
Para obtener más información sobre cómo configurar estos campos y conocer las limitaciones, consulta Configura la separación de cargas de trabajo en GKE.
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.
Opciones de configuración no compatibles
GKE no crea grupos de nodos nuevos que usen las siguientes configuraciones:
- GKE Sandbox
- Sistemas operativos Windows
- Ajuste de escala automático de PersistentVolumes locales
- Nodos que usan SSD locales dedicadas para el almacenamiento efímero de Pods Sin embargo, GKE puede crear grupos de nodos nuevos que usen SSDs locales para el almacenamiento en bloque sin procesar.
- Nodos que usan filtros alterados para la programación personalizada
- Multisubprocesos simultáneos (SMT)
- Unidad de supervisión del rendimiento (PMU).
El escalador automático del clúster puede escalar nodos en grupos de nodos existentes que usan estas configuraciones.