Google Kubernetes Engine (GKE) puede crear y gestionar automáticamente grupos de nodos en tus clústeres en función de 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 escalado y el comportamiento predeterminado, y se ofrecen recomendaciones que pueden ayudarte a mejorar la escalabilidad. Este documento está dirigido a administradores de clústeres que quieran reducir los costes asociados a la gestión manual de la infraestructura en sus clústeres en modo Estándar.
Ya deberías conocer los siguientes conceptos:
En el modo Autopilot, GKE siempre crea y gestiona nodos y grupos de nodos en función de tus cargas de trabajo. No es necesario que configures manualmente la creación automática de grupos de nodos en los clústeres de Autopilot ni en las cargas de trabajo de Autopilot de los clústeres estándar. Para obtener más información, consulta la descripción general de Autopilot de GKE.
¿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. La creación automática de grupos de nodos es un mecanismo de autoescalado de la infraestructura que permite a GKE crear grupos de nodos en tu clúster que cumplan los requisitos de tus cargas de trabajo. GKE gestiona estos grupos de nodos creados automáticamente y realiza tareas como actualizar los metadatos de los nodos, crear y eliminar nodos en el grupo de nodos, y eliminar todo el grupo de nodos cuando ya no sea necesario. La creación automática de grupos de nodos es una extensión de la herramienta de escalado automático de clústeres de GKE, que escala automáticamente los nodos de grupos de nodos concretos.
La creación automática de grupos de nodos se ha diseñado para que GKE pueda reducir la escala y eliminar automáticamente los grupos de nodos vacíos de tu clúster. No puedes definir un número mínimo de nodos que deba tener cada grupo de nodos creado automáticamente, ya que un número mínimo superior a cero impediría la eliminación de grupos de nodos vacíos. Si tu caso práctico requiere que siempre se ejecute un número mínimo de nodos en tu clúster, crea manualmente un grupo de nodos con el autoescalado habilitado.
Cómo funciona
La creación automática de grupos de nodos amplía la herramienta de adaptación dinámica de clústeres de GKE para que GKE pueda aprovisionar grupos de nodos que cumplan los requisitos de hardware y las solicitudes de recursos de los pods pendientes. Puede definir los requisitos de hardware de las siguientes formas:
- Usa ComputeClasses, que luego seleccionas en varios pods mediante un selector de nodos. Te recomendamos este método porque 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 los pods.
GKE configura nuevos grupos de nodos en función de parámetros como los siguientes:
- Solicitudes de recursos de CPU, memoria y almacenamiento efímero en tus pods y contenedores, incluidos los pods gestionados por DaemonSets.
- Solicitudes de GPU y TPU en especificaciones de Pod 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 las ComputeClasses.
- Tolerancias en las especificaciones de los pods pendientes que tienen selectores de nodos coincidentes.
GKE configura la capacidad de recursos de cada nodo de 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 las solicitudes de recursos sean lo suficientemente grandes para que el pod funcione correctamente. Si las solicitudes de tu pod son demasiado bajas, los pods no se ejecutarán como se espera después de que GKE los programe en nodos creados automáticamente.
Configuración de metadatos de nodos
GKE también configura los metadatos de los nodos (como etiquetas, anotaciones y taints de nodos) en función de los requisitos de tus cargas de trabajo, como en los siguientes ejemplos:
- Si solicitas la serie de máquinas N2, GKE añade la etiqueta de nodo
cloud.google.com/machine-family: n2
a cada uno de los nodos. - Si seleccionas una ComputeClass en tu pod, GKE añade una etiqueta de nodo con la clave
cloud.google.com/compute-class
definida con el nombre de esa ComputeClass. - Si tu pod tiene una tolerancia y un selector de nodos para la misma etiqueta de nodo, GKE añade 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 la herramienta de adaptación dinámica del clúster cree nuevos grupos de nodos y nodos para ejecutar los pods pendientes. Si el número de pods de un grupo de nodos creado automáticamente disminuye, el autoescalador de clústeres reduce gradualmente el tamaño del grupo de nodos. Cuando es posible, GKE desvía los nodos infrautilizados del grupo de nodos, consolida los pods en otros nodos y elimina los nodos vacíos.
Si el número de nodos de un grupo de nodos creado automáticamente es cero, GKE elimina ese grupo de nodos. GKE no elimina los grupos de nodos que excluyas de la creación automática, como los grupos de nodos creados manualmente. Para obtener más información sobre cómo reduce la escala de los grupos de nodos la herramienta de adaptación dinámica de clústeres, consulta Cómo funciona la herramienta de adaptación dinámica de clústeres.
Preferencias de escalado de GKE
Se aplican las siguientes preferencias cuando GKE adapta dinámicamente tu infraestructura:
- Reducir el desperdicio de recursos de computación: GKE usa la capacidad de recursos de los grupos de nodos creados automáticamente en tu clúster para determinar el tipo de máquina que se debe usar en los nuevos grupos de nodos. A medida que aumenta el tamaño de tu clúster, GKE prefiere usar tipos de máquina más grandes para los grupos de nodos nuevos, de forma que se puedan ejecutar más pods en cada nodo del grupo de nodos.
- Optimizar la escalabilidad y la latencia: GKE siempre prioriza la escalada vertical de los grupos de nodos compatibles que ya existen en lugar de crear grupos de nodos nuevos. La solidez de esta preferencia aumenta a medida que aumenta el número de grupos de nodos distintos de tu clúster. Cuando el número de grupos de nodos distintos se acerca a los límites admitidos para conseguir una latencia y una escalabilidad óptimas, GKE reduce la prioridad de la creación de grupos de nodos.
Estas prioridades ayudan a que tus clústeres tengan un uso eficiente de los recursos de computación a gran escala, como en los siguientes ejemplos:
- En los clústeres que tienen un número reducido de grupos de nodos y un menor uso de recursos, GKE crea grupos de nodos nuevos con más frecuencia y usa tipos de máquina más pequeños para esos grupos de nodos.
- En los clústeres que tienen un gran número de grupos de nodos, el uso de recursos es alto. GKE crea grupos de nodos con menos frecuencia y usa tipos de máquina 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 usa GKE en los grupos de nodos creados automáticamente mediante una ComputeClass que tenga el campo priorities.machineFamily
y el campo priorities.minCores
o el campo priorities.minMemoryGb
.
Métodos para habilitar la creación automática de grupos de nodos
GKE puede crear automáticamente grupos de nodos para clases de computación específicas o para cualquier carga de trabajo que utilice una configuración compatible, en función de cómo configures tu clúster.
Métodos de habilitación | |
---|---|
A nivel de carga de trabajo (opción recomendada) | En la versión 1.33.3-gke.1136000 de GKE y posteriores, usa ComputeClasses para habilitar la creación automática de grupos de nodos sin usar el aprovisionamiento automático de nodos a nivel de clúster. GKE solo crea grupos de nodos para las cargas de trabajo que seleccionan ComputeClasses específicas que tienen habilitada la creación automática. Las cargas de trabajo que ya estén en el clúster no se verán 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 de tus cargas de trabajo. ComputeClasses proporciona funciones únicas y te ofrece una forma flexible de optimizar el escalado en tu clúster. Para obtener más información, consulta el artículo Acerca de las ComputeClasses personalizadas. |
Nivel de clúster | Habilita el aprovisionamiento automático de nodos en todo el clúster. Debes definir límites para 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 de 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 para cualquier carga de trabajo pendiente del clúster mediante ComputeClasses o selectores en las especificaciones de los pods. |
Estos métodos de configuración no se excluyen mutuamente. Puedes usar ComputeClasses para crear automáticamente grupos de nodos en clústeres que usen el aprovisionamiento automático de nodos. Si utilizas ambos métodos para habilitar la creación automática de grupos de nodos en un clúster, GKE usará el siguiente orden de preferencia para encontrar el valor de un ajuste de configuración que se utilizará en un grupo de nodos:
- ComputeClass o especificación de Pod: si especificas un ajuste (como un tipo de máquina) en un ComputeClass o en una especificación de Pod, GKE usará ese ajuste.
- Valor predeterminado de aprovisionamiento automático de nodos a nivel de clúster: si no se especifica un ajuste en una ComputeClass o en una especificación de Pod, GKE comprueba si has definido un valor predeterminado para el aprovisionamiento automático de nodos en el clúster. Si existe un valor predeterminado a nivel de clúster, GKE usa ese valor.
- Valor predeterminado a nivel de clúster: si no se especifica un ajuste en ComputeClasses, en las especificaciones de Pod o como valor predeterminado para el aprovisionamiento automático de nodos a nivel de clúster, GKE usa el valor predeterminado que Google Cloud establece para el clúster.
Por ejemplo, supongamos que GKE intenta encontrar un tipo de máquina para usarlo en un grupo de nodos creado automáticamente. El orden de preferencia anterior se aplica de la siguiente manera:
- GKE comprueba si la especificación del pod o la clase de computación del pod especifican un tipo de máquina.
- Si la especificación del pod o ComputeClass no especifican un tipo de máquina, GKE comprueba si has definido un tipo de máquina predeterminado para el aprovisionamiento automático de nodos en el clúster.
- Si no has definido un tipo de máquina predeterminado para el aprovisionamiento automático de nodos, GKE usará el tipo de máquina predeterminado del clúster.
Te recomendamos que solo uses el método de habilitación ComputeClass en la mayoría de las situaciones. En las siguientes secciones se ofrecen detalles sobre cada uno de estos métodos de configuración, incluidas las limitaciones y consideraciones.
Habilitación a nivel de carga de trabajo con ComputeClasses
Puedes habilitar la creación automática de grupos de nodos para cualquier ComputeClass de 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. Seguirás pudiendo interactuar con los grupos de nodos. GKE solo implementa los ajustes o las restricciones que configures.autopilot
: ejecuta las cargas de trabajo que seleccionen este ComputeClass en modo Autopilot. Al igual que en un clúster Autopilot, GKE gestiona completamente los nodos e implementa varias restricciones y ajustes de Autopilot. Si usas el campoautopilot
, puedes saltarte este documento. Para obtener más información, consulta Información sobre las cargas de trabajo del modo Autopilot en Estándar.
En los clústeres que cumplan los siguientes requisitos, puedes usar estos campos en una ComputeClass sin habilitar el aprovisionamiento automático de nodos a nivel de clúster:
- Usa la versión 1.33.3-gke.1136000 de GKE o una posterior.
- Están registrados en el canal de lanzamiento rápido.
Si configuras la creación automática de grupos de nodos en una ComputeClass sin habilitar el aprovisionamiento automático de nodos en el clúster, GKE creará grupos de nodos solo para las cargas de trabajo que usen la ComputeClass. Otras cargas de trabajo no se ven afectadas.
El siguiente manifiesto de ComputeClass 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 de clúster con el 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 aprovisionamiento automático de nodos en el clúster mediante la API de Google Kubernetes Engine. El aprovisionamiento automático de nodos permite a GKE crear nuevos grupos de nodos según sea necesario para cualquier carga de trabajo del clúster en función de las especificaciones de los pods o de las configuraciones de ComputeClass. GKE no gestiona ningún grupo de nodos que ya esté en el clúster, pero puedes marcar grupos de nodos concretos como aprovisionados automáticamente después de habilitar el aprovisionamiento automático de nodos en el clúster.
Habilita el aprovisionamiento automático de nodos en situaciones como las siguientes:
- Quieres 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 definir manualmente los límites de recursos de todo el clúster. En las versiones de GKE anteriores a la 1.33.3-gke.1136000, debes definir límites de recursos en todo el clúster aunque uses ComputeClasses.
Quieres usar funciones o configuraciones específicas que no son compatibles con ComputeClasses.
Quieres definir valores de configuración de nodo predeterminados para todo el clúster.
Después de habilitar el aprovisionamiento automático de nodos, puedes configurar los valores predeterminados de varios ajustes de nodos mediante la CLI de Google Cloud o un archivo de configuración YAML.
Límites de recursos a nivel de clúster con el aprovisionamiento automático de nodos
Cuando habilitas el aprovisionamiento automático de nodos en un clúster completo, también debes configurar límites para recursos como CPU, memoria, GPUs y TPUs 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 si la operación supera uno de estos límites de recursos.
Estos límites de recursos a nivel de clúster solo son obligatorios si habilitas el aprovisionamiento automático de nodos en el clúster. En los clústeres que cumplan 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.
- Están registrados en el canal de lanzamiento rápido.
Si tu clúster cumple estos requisitos, te recomendamos que uses solo ComputeClasses para configurar los grupos de nodos creados automáticamente.
Configuración predeterminada de los grupos de nodos creados automáticamente
Puedes especificar valores predeterminados que GKE aplique a los grupos de nodos creados automáticamente a nivel de carga de trabajo o de clúster.
- Configuración predeterminada a nivel de carga de trabajo: puede usar los campos
spec.nodePoolConfig
yspec.priorityDefaults
en la especificación de ComputeClass para definir valores predeterminados para ajustes de nodos específicos. Estos valores predeterminados solo se aplican a los grupos de nodos que GKE crea para esa ComputeClass. - Ajustes predeterminados a nivel de clúster: puedes definir valores predeterminados para los grupos de nodos creados automáticamente al configurar el aprovisionamiento automático de nodos. Para especificar los valores predeterminados, puedes usar la CLI de gcloud o un archivo de configuración YAML.
Estos métodos para definir valores predeterminados no se excluyen mutuamente. Si configuras valores predeterminados para un ajuste específico en un ComputeClass y para todo el clúster, GKE usará el valor de ComputeClass. Si ComputeClass no especifica ningún valor para ese ajuste, GKE usará el valor predeterminado a nivel de clúster.
Ajustes predeterminados a nivel de 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 los ajustes predeterminados de todo el clúster para los grupos de nodos creados automáticamente. Puedes especificar varios ajustes en un solo archivo de configuración. Algunas configuraciones avanzadas (como los ajustes 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 y la actualización automáticas de los nodos en los grupos de nodos que se creen automáticamente:
management: autoRepair: true autoUpgrade: true
En el siguiente archivo de configuración de ejemplo se definen los límites de recursos de todo el clúster para el aprovisionamiento automático de nodos y se configuran varios ajustes 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 define los siguientes valores predeterminados:
- Habilita la reparación y actualización automáticas de nodos en los grupos de nodos creados automáticamente.
- Habilita Arranque seguro y monitorización de integridad en los grupos de nodos que se creen automáticamente.
- Define el tamaño del disco de arranque en 100 GiB para los grupos de nodos creados automáticamente.
Después de aplicar el archivo de configuración al clúster, GKE usará los ajustes del archivo solo para los grupos de nodos creados automáticamente en el clúster. Los ajustes nuevos o modificados que especifiques en el archivo no se aplicarán a los node pools que GKE haya creado en el clúster. Si actualizas un valor que se había definido anteriormente para el clúster, GKE usará el nuevo valor en todos los grupos de nodos nuevos. Por ejemplo, si antes había definido la serie de máquinas predeterminada como N2 y actualiza el valor a N4 en el 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 de clúster, consulta el artículo Configurar ajustes con un archivo de configuración de aprovisionamiento automático de nodos.
Casos prácticos de creación automática de grupos de nodos
En las siguientes secciones se describen algunos casos prácticos habituales y el hardware compatible con la creación automática de grupos de nodos. Para obtener más información sobre otros casos prácticos y configuraciones admitidas, consulta la documentación de tu caso práctico específico.
Selección de serie o tipo de máquina
Puede seleccionar una serie o un tipo de máquina de Compute Engine para que GKE los use en los pools de nodos creados automáticamente de una de las siguientes formas:
- ComputeClasses use
machineFamily
omachineType
reglas de prioridad. - Especificaciones de pods: en una serie de máquinas, usa un selector de nodos para la etiqueta de nodo
cloud.google.com/machine-family
. En el caso de 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 Seleccionar una serie o un tipo de máquina.
Si no seleccionas explícitamente una máquina, GKE usará la serie de máquinas E2 o un tipo de máquina que sea compatible con el hardware que solicite tu carga de trabajo. Por ejemplo, GKE usa tipos de máquinas con GPU para GPUs y máquinas especializadas para recursos de TPU.
Cuando solicites una serie o un tipo de máquina, asegúrate de que los demás 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.
Series de máquinas admitidas
Puedes solicitar explícitamente cualquier serie o tipo de máquina de Compute Engine admitido en un ComputeClass o una 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 se admiten en todas las versiones de GKE.
Selección de GPU
Puedes solicitar GPUs para grupos de nodos creados automáticamente de una de las siguientes formas:
- 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 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 el número de GPUs. El número de GPUs que selecciones afectará a la capacidad de CPU y memoria de los nodos.
Selección de TPU de Cloud
Puedes solicitar recursos de TPU de Cloud para grupos de nodos creados automáticamente de una de las siguientes formas:
- ComputeClasses usa la
tpu
regla de prioridad para configurar las TPUs. A continuación, solicita el mismo número de recursos de TPU en los pods. Para obtener más información, consulta Aprovisionar TPUs mediante clases de computación personalizadas. - Especificaciones de los pods: configura los límites de TPU en todo el clúster. A continuación, usa selectores de nodos para configurar las TPUs y solicitar recursos de TPU en los pods. Para obtener más información, consulta Configurar TPUs de Cloud.
Tanto los grupos de nodos de TPU de un solo host como los grupos de nodos de TPU de varios hosts admiten el autoescalado y la creación automática de grupos de nodos. En el caso de la creación automática de grupos de nodos, GKE crea grupos de nodos de slices de TPU de un solo host o de varios hosts con una versión y una topología de TPU que cumplan los requisitos de las cargas de trabajo pendientes.
Requisitos de versión de GKE para TPU de Cloud
La creación automática de grupos de nodos solo admite las siguientes TPUs de Cloud en versiones específicas de GKE:
- TPU de Cloud 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 TPU de Cloud son compatibles con todas las versiones de GKE.
Escalado automático de grupos de nodos de TPU de Cloud
GKE escala automáticamente los grupos de nodos de Cloud TPU creados automáticamente o manualmente que usan el autoescalador de clústeres de una de las siguientes formas:
- Grupo de nodos de segmento de TPU de un solo host: GKE añade o elimina nodos de TPU en el grupo de nodos. El grupo de nodos puede contener cualquier número de nodos de TPU entre cero y el tamaño máximo del grupo de nodos, determinado por las marcas de autoescalado
--max-nodes
y--total-max-nodes
. Todos los nodos de TPU del pool de nodos tienen el mismo tipo de máquina y la misma topología. Para obtener más información sobre cómo crear un grupo de nodos de segmento de TPU de un solo host, consulta Crear un grupo de nodos. - Grupo de nodos de segmento de TPU de varios hosts: GKE aumenta de forma atómica el grupo de nodos de cero al número de nodos necesarios para satisfacer la topología de la TPU. Por ejemplo, en un grupo de nodos de TPU con el
ct5lp-hightpu-4t
tipo de máquina y una topología de16x16
, el grupo de nodos siempre tiene 64 nodos o ninguno. GKE reduce el tamaño del grupo de nodos si no hay cargas de trabajo de TPU en él. Para reducir el tamaño del grupo de nodos, GKE expulsa todos los pods programados y elimina todos los nodos del grupo de nodos. Para obtener más información sobre cómo crear un grupo de nodos de un slice de TPU de varios hosts, consulta Crear un grupo de nodos.
Configuración de un pool de nodos de TPU de Cloud
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 implementación que solicita TPUs en la especificación de Pod. Si el ajuste de aprovisionamiento automático de nodos a nivel de clúster está habilitado, esta implementación activará la creación automática de grupos de nodos. Cuando creas este ejemplo de Deployment, GKE crea un grupo de nodos que contiene un segmento de TPU v4 con una topología de 2x2x2 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, puede usar cualquiera de los siguientes:- 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
: número y disposición física de los chips de TPU en una porción de TPU. Para obtener más información, consulta Elegir una topología.limits.google.com/tpu
: número de chips de TPU en la VM de TPU. La mayoría de las configuraciones solo tienen un valor correcto. Para obtener más información, consulta Cómo funcionan las TPUs en GKE.cloud.google.com/reservation-name
: nombre de la reserva de capacidad que se va a usar para obtener recursos de TPU. Si se omite, la carga de trabajo no usará ninguna reserva.
La configuración del grupo de nodos creado automáticamente depende del tipo de TPU, la topología de TPU y el número de chips de TPU que selecciones. Para predecir el tipo, el tamaño y la configuración de tu grupo de nodos, haz lo siguiente:
- En Elegir una topología, filtra la tabla por Estándar para el tipo de TPU que hayas especificado, como TPU Trillium o TPU v5e.
- Usa los valores que has especificado para identificar la configuración del grupo de nodos, de la siguiente manera:
gke-tpu-topology
: busca en la tabla la fila que tenga el mismo valor para Topología.limits
: en la tabla, divide el valor de Número de chips de TPU entre el valor de Número de VMs. Busca en la tabla la fila que tenga el mismo valor resultante que el valor que has especificado.
Por ejemplo, supongamos que has solicitado tpu-v6e-slice
(TPU
Trillium) con una topología 2x4
. En este caso, filtra la tabla de Elegir una topología para TPU Trillium. A continuación, identifique la fila que corresponde a la configuración especificada, como se indica a continuación:
gke-tpu-topology
: la TPU Trillium tiene las siguientes configuraciones para una topología de 2x4:- Un grupo de nodos de segmento de TPU de un solo host que tiene ocho chips de TPU en una instancia.
ct6e-standard-8t
- Un grupo de nodos de un slice de TPU de varios hosts que tiene ocho chips de TPU distribuidos en dos instancias
ct6e-standard-4t
.
- Un grupo de nodos de segmento de TPU de un solo host que tiene ocho chips de TPU en una instancia.
limits
: como 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 quieras, como se indica a continuación:- Grupo de nodos de segmento de TPU de un solo host: 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. - Pool de nodos de segmento de TPU multihost: especifica
limits.google.com/tpu: 4
para obtener un pool de nodos que tenga ocho chips de TPU y dos VMs. Cada VM tiene 4 chips.
- Grupo de nodos de segmento de TPU de un solo host: especifica
Selección de VMs de acceso puntual
Puedes seleccionar VMs Spot para los grupos de nodos creados automáticamente de una de las siguientes formas:
- ComputeClasses usa el campo
spot
en una regla de prioridad. - Especificaciones de pod: usa una tolerancia para la etiqueta de nodo
cloud.google.com/gke-spot="true"
con el efectoNoSchedule
. Añade un selector de nodos para las etiquetas de nodocloud.google.com/gke-spot=true
ocloud.google.com/gke-provisioning=spot
. También puedes seleccionar máquinas virtuales interrumpibles mediante la etiqueta de nodocloud.google.com/gke-preemptible
en tu tolerancia y selector de nodos. Sin embargo, te recomendamos que uses máquinas virtuales de acceso puntual.
Configuración del almacenamiento efímero
GKE usa una parte del disco de arranque del nodo para el almacenamiento efímero de pods. Puede personalizar el tamaño del disco de arranque que usa GKE para los nodos creados automáticamente de una de las siguientes formas:
- ComputeClasses usa los campos
storage.bootDiskSize
ystorage.bootDiskType
en una regla de prioridad. Puedes configurar diferentes ajustes de disco de arranque para diferentes ComputeClasses. - Especificaciones de los pods: usa los campos
diskSizeGb
ydiskType
del archivo de configuración a nivel de clúster. Con este método, no puedes controlar el tamaño ni el tipo del disco de arranque de los 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 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 nuevo grupo de nodos y el pod permanecerá en estado pendiente. GKE no ajusta dinámicamente el tamaño de los discos de arranque en función de las solicitudes de almacenamiento efímero de los pods.
Separación de cargas de trabajo
Puedes solicitar que determinados pods se ejecuten siempre en nodos independientes 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 formas:
- ComputeClasses los nodos que crea GKE para un ComputeClass específico solo pueden ejecutar pods que seleccionen ese ComputeClass. No es necesario que modifiques las especificaciones de tu pod. Puedes separar los pods de un ComputeClass mediante la afinidad y la antiafinidad entre pods.
- Especificaciones de pods: si habilitas el aprovisionamiento automático de nodos en el clúster, puedes configurar la separación de cargas de trabajo mediante los campos de la especificación de pods. Durante la creación automática de grupos de nodos, GKE puede crear grupos de nodos con etiquetas y taints si se cumplen todas las condiciones siguientes:
- El pod usa un selector de nodos para solicitar una clave y un valor de etiqueta de nodo personalizados. No puedes usar etiquetas de nodo del sistema para separar cargas de trabajo.
- El pod tiene una tolerancia para la misma clave de etiqueta de nodo.
- El efecto de tolerancia es
NoSchedule
,NoExecute
o no se ha especificado.
Para obtener más información sobre cómo configurar estos campos y sobre las limitaciones, consulta Configurar la separación de cargas de trabajo en GKE.
Limitaciones
- Todas las limitaciones del autoescalador de clústeres también se aplican a la creación automática de grupos de nodos.
- Los clústeres que tengan más de 200 grupos de nodos en total pueden experimentar una mayor latencia durante el autoescalado. Cualquier configuración que active la creación de un grupo de nodos nuevo, como la separación de cargas de trabajo o el uso de varias ComputeClasses, aumenta este número. Para obtener más información sobre los límites de los clústeres, consulta los límites y las prácticas recomendadas en "Planificar clústeres grandes".
- Los límites de recursos que definas para el clúster al habilitar el aprovisionamiento automático de nodos también se aplican a los grupos de nodos que GKE crea para las clases de Compute.
- ComputeClasses no admite los siguientes ajustes:
- Actualizaciones de picos o actualizaciones azul-verde.
- Integridad de los nodos y arranque seguro.
- Para habilitar la creación automática de grupos de nodos en una ComputeClass en versiones de GKE anteriores a la 1.33.3-gke.1136000, también debes habilitar el aprovisionamiento automático de nodos a nivel de clúster. Esta limitación no se aplica en la versión 1.33.3-gke.1136000 de GKE ni en versiones posteriores.
Configuraciones no admitidas
GKE no crea grupos de nodos que usen las siguientes configuraciones:
- GKE Sandbox
- Sistemas operativos Windows
- Autoescalado de PersistentVolumes locales.
- Nodos que usan SSDs locales dedicados para el almacenamiento efímero de pods. Sin embargo, GKE puede crear grupos de nodos que utilicen SSDs locales para el almacenamiento en bloques sin formato.
- Nodos que usan filtros modificados para la programación personalizada.
- Multihilo simultáneo (SMT).
- Unidad de monitorización del rendimiento (PMU).
La herramienta de escalado automático de clústeres puede escalar nodos en grupos de nodos que ya existan y que usen estas configuraciones.