Para mejorar la estabilidad de las cargas de trabajo, el modo Autopilot de Google Kubernetes Engine (GKE) administra los valores de las solicitudes de recursos de Pods, como CPU, memoria o almacenamiento efímero. En esta página, se incluye la siguiente información, que puedes usar para planificar cargas de trabajo eficientes, estables y rentables:
- Valores predeterminados que Autopilot aplica a los Pods que no especifican valores.
- Valores mínimos y máximos que Autopilot aplica para las solicitudes de recursos.
- Cómo varían los valores predeterminados, mínimos y máximos según el hardware que solicitan tus Pods
Esta página está dirigida a operadores y desarrolladores que aprovisionan y configuran recursos de la nube, y que implementan cargas de trabajo. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud, consulta Roles de usuario y tareas comunes de GKE.
Ya deberías conocer la administración de recursos de Kubernetes.
Descripción general de las solicitudes de recursos en Autopilot
Autopilot usa las solicitudes de recursos que especificas en la configuración de tu carga de trabajo para configurar los nodos que ejecutan tus cargas de trabajo. Autopilot aplica las solicitudes de recursos mínimas y máximas según la clase de procesamiento o la configuración de hardware que usan tus cargas de trabajo. Si no especificas solicitudes para algunos contenedores, Autopilot asigna valores predeterminados para permitir que esos contenedores se ejecuten de forma correcta.
Cuando implementas una carga de trabajo en un clúster de Autopilot, GKE valida la configuración de la carga de trabajo con los valores mínimos y máximos permitidos para la clase de procesamiento seleccionada o la configuración de hardware (como las GPU). Si tus solicitudes son menores que el mínimo, Autopilot modifica automáticamente la configuración de tu carga de trabajo para mover tus solicitudes dentro del rango permitido. Si tus solicitudes son superiores al máximo, Autopilot rechaza tu carga de trabajo y muestra un mensaje de error.
En la siguiente lista, se resumen las categorías de solicitudes de recursos:
- Solicitudes de recursos predeterminadas: Autopilot las agrega si no especificas tus propias solicitudes para cargas de trabajo
- Solicitudes de recursos mínimas y máximas: Autopilot valida tus solicitudes especificadas para garantizar que estén dentro de estos límites. Si tus solicitudes están fuera de los límites, Autopilot las modificará.
- Separación de cargas de trabajo y solicitudes de duración extendida: Autopilot tiene diferentes valores predeterminados y diferentes valores mínimos para las cargas de trabajo que separan entre sí o para Pods que obtienen protección extendida de la expulsión iniciada por GKE.
- Solicitudes de recursos para DaemonSets: Autopilot tiene diferentes valores predeterminados, mínimos y máximos para los contenedores en DaemonSets.
Cómo solicitar recursos
En Autopilot, solicitas recursos en la especificación del Pod. Los recursos mínimos y máximos admitidos que puedes solicitar cambian según la configuración de hardware del nodo en el que se ejecutan los Pods. Para obtener información sobre cómo solicitar configuraciones de hardware específicas, consulta las siguientes páginas:
- Elige clases de procesamiento para los Pods de Autopilot
- Implementa cargas de trabajo de GPU en Autopilot
Solicitudes de recursos predeterminadas
Si no especificas solicitudes de recursos para algunos contenedores en un Pod, Autopilot aplica valores predeterminados. Estos valores predeterminados son adecuados para muchas cargas de trabajo más pequeñas.
Además, Autopilot aplica las siguientes solicitudes de recursos predeterminadas, sin importar la clase de procesamiento o la configuración de hardware seleccionadas:
Contenedores en DaemonSets
- CPU: 50 mCPU
- Memoria: 100 MiB
- Almacenamiento efímero: 100 MiB
Todos los demás contenedores
- Almacenamiento efímero: 1 GiB
Para obtener más información sobre los límites del clúster de Autopilot, consulta Cuotas y límites.
Solicitudes predeterminadas para clases de procesamiento
Autopilot aplica los siguientes valores predeterminados a los recursos que no están definidos en la especificación del Pod para pods que se ejecutan en clases de procesamiento: Si solo configuras una de las solicitudes y dejas la otra en blanco, GKE usa la proporción de CPU:memoria definida en la sección Solicitudes mínimas y máximas para establecer la solicitud faltante a un valor que cumple con la proporción.
Clase de procesamiento | Recurso | Solicitud predeterminada |
---|---|---|
De uso general (predeterminado) | CPU | 0.5 CPU virtual |
Memoria | 2 GiB | |
Accelerator | No se aplican solicitudes predeterminadas. | |
Equilibrado | CPU | 0.5 CPU virtual |
Memoria | 2 GiB | |
Rendimiento | No se aplican solicitudes predeterminadas. | |
Escalar horizontalmente | CPU | 0.5 CPU virtual |
Memoria | 2 GiB |
Solicitudes de recursos mínimas y máximas
El total de recursos que solicita tu configuración de implementación debe estar dentro de los valores mínimos y máximos admitidos que permite Autopilot. Se aplican las siguientes condiciones:
Solicitudes de almacenamiento efímero:
El almacenamiento efímero usa el disco de arranque de la VM, a menos que tus nodos tengan SSD locales conectadas.
El hardware de procesamiento que incluye SSD locales, como las GPU A100 (80 GB), las GPU H100 (80 GB) o la serie de máquinas Z3, admite una solicitud máxima igual al tamaño de la SSD local menos cualquier sobrecarga del sistema. Para obtener información sobre esta sobrecarga del sistema, consulta Almacenamiento efímero respaldado por SSD locales.
En la versión 1.29.3-gke.1038000 y posteriores de GKE, los Pods de clase de rendimiento y los Pods de acelerador de hardware admiten una solicitud de almacenamiento efímero máximo de 56 TiB, a menos que el hardware incluya SSDs locales.
En todos los demás Pods de Autopilot, independientemente de la versión de GKE, la solicitud total de almacenamiento efímero en todos los contenedores del Pod debe estar entre 10 MiB y 10 GiB, a menos que se especifique lo contrario.
Para volúmenes más grandes, usa volúmenes efímeros genéricos, que proporcionan una funcionalidad y un rendimiento equivalentes al almacenamiento efímero, pero con mucha más flexibilidad, ya que se pueden usar con cualquier opción de almacenamiento de GKE. Por ejemplo, el tamaño máximo de un volumen efímero genérico con
pd-balanced
es de 64 TiB.
Para los Pods DaemonSet, las solicitudes mínimas de recursos son las siguientes:
- Clústeres que admiten aumentos de actividad: 1 mCPU por Pod, 2 MiB de memoria por Pod y 10 MiB de almacenamiento efímero por contenedor en el Pod.
- Clústeres que no admiten aumentos de actividad: 10 mCPU de CPU por Pod, 10 MiB de memoria por Pod y 10 MiB de almacenamiento efímero por contenedor en el Pod.
Para verificar si tu clúster admite el aumento de actividad, consulta Disponibilidad del aumento de actividad en GKE.
Si tu clúster admite el aumento repentino de actividad, Autopilot no aplica incrementos de 0.25 CPU virtuales para las solicitudes de CPU de tu Pod. Si tu clúster no admite el aumento repentino de actividad, Autopilot redondea tus solicitudes de CPU al incremento de 0.25 vCPU más cercano. Para verificar si tu clúster admite el bursting, consulta Disponibilidad del bursting en GKE.
La proporción de CPU y memoria debe estar dentro del rango permitido para la clase de procesamiento o la configuración de hardware seleccionada. Si la proporción entre CPU y memoria está fuera del rango permitido, Autopilot aumenta automáticamente el recurso más pequeño. Por ejemplo, si solicitas 1 CPU virtual y 16 GiB de memoria (proporción 1:16) para Pods que se ejecutan en la clase
Scale-Out
, Autopilot aumenta la solicitud de CPU a 4 CPU virtuales, lo que cambia la proporción a 1:4.
Mínimos y máximos para las clases de procesamiento
En la siguiente tabla, se describe la proporción de CPU y memoria mínima, máxima y permitida para cada clase de procesamiento que admite Autopilot:
Clase de procesamiento | Proporción de CPU:memoria (CPU virtual:GiB) | Recurso | Mínimo | Máximo |
---|---|---|---|---|
De uso general (predeterminado) | Entre 1:1 y 1:6.5 | CPU | El valor depende de si tu clúster admite ráfagas, de la siguiente manera:
Para verificar si tu clúster admite el aumento de actividad, consulta Disponibilidad del aumento de actividad en GKE. |
30 CPU virtuales |
Memoria | El valor depende de si tu clúster admite ráfagas, de la siguiente manera:
Para verificar si tu clúster admite el aumento de actividad, consulta Disponibilidad del aumento de actividad en GKE. |
110 GiB | ||
Accelerator | Consulta Valores mínimos y máximos para los aceleradores | |||
Equilibrado | Entre 1:1 y 1:8 | CPU | 0.25 CPU virtual | 222 CPU virtuales Si se seleccionó la plataforma de CPU mínima, haz lo siguiente:
|
Memoria | 0.5 GiB | 851 GiB Si se seleccionó la plataforma de CPU mínima, haz lo siguiente:
|
||
Rendimiento | N/A | CPU | No se aplica una cantidad mínima de solicitudes |
|
Memoria | No se aplica una cantidad mínima de solicitudes |
|
||
Almacenamiento efímero | No se aplica una cantidad mínima de solicitudes |
|
||
Escalar horizontalmente | Exactamente 1:4 | CPU | 0.25 CPU virtual |
|
Memoria | 1 GiB |
|
Para obtener información sobre cómo solicitar clases de procesamiento en tus Pods de Autopilot, consulta Elige clases de procesamiento para Pods de Autopilot.
Mínimos y máximos para los aceleradores
GKE no aplica solicitudes mínimas de CPU, memoria o almacenamiento efímero para los Pods que usan aceleradores. En la siguiente tabla, se describen las solicitudes máximas para cada uno de estos recursos según la cantidad y el tipo de acelerador que uses.
A menos que se especifique, el almacenamiento efímero máximo admitido es de 56 TiB.
Tipo de acelerador | Recurso | Máximo |
---|---|---|
NVIDIA B200nvidia-B200 |
CPU |
|
Memoria |
|
|
Almacenamiento efímero |
|
|
NVIDIA H200 (141 GB)nvidia-h200-141gb |
CPU |
|
Memoria |
|
|
Almacenamiento efímero |
|
|
NVIDIA H100 Mega (80 GB)nvidia-h100-mega-80gb |
CPU |
|
Memoria |
|
|
Almacenamiento efímero |
|
|
NVIDIA H100 (80 GB)nvidia-h100-80gb |
CPU |
|
Memoria |
|
|
Almacenamiento efímero |
|
|
NVIDIA A100 (40 GB)nvidia-tesla-a100 |
CPU |
La suma de solicitudes de CPU de todos los DaemonSets que se ejecutan en un nodo de GPU A100 no debe exceder las 2 CPUs virtuales. |
Memoria |
La suma de las solicitudes de memoria de todos los DaemonSets que se ejecutan en un nodo de GPU A100 no debe exceder los 14 GiB. |
|
NVIDIA A100 (80 GB)nvidia-a100-80gb |
CPU |
La suma de solicitudes de CPU de todos los DaemonSets que se ejecutan en un nodo de GPU A100 (80 GB) no debe exceder las 2 CPUs virtuales. |
Memoria |
La suma de las solicitudes de memoria de todos los DaemonSets que se ejecutan en un nodo de GPU A100 (80 GB) no debe exceder los 14 GiB. |
|
Almacenamiento efímero |
|
|
NVIDIA L4nvidia-l4 |
CPU |
La suma de solicitudes de CPU de todos los DaemonSets que se ejecutan en un nodo de GPU L4 no debe exceder las 2 CPUs virtuales. |
Memoria |
La suma de las solicitudes de memoria de todos los DaemonSets que se ejecutan en un nodo de GPU L4 no debe exceder los 14 GiB. |
|
NVIDIA Tesla T4nvidia-tesla-t4 |
CPU |
|
Memoria |
|
|
TPU v5etpu-v5-lite-podslice |
CPU |
|
Memoria |
|
|
Almacenamiento efímero | 56 TiB | |
TPU v5ptpu-v5p-slice |
CPU | 280 CPU virtuales |
Memoria | 448 GiB | |
Almacenamiento efímero | 56 TiB | |
TPU v4tpu-v4-podslice |
CPU | 240 CPU virtuales |
Memoria | 407 GiB | |
Almacenamiento efímero | 56 TiB |
Para obtener información sobre cómo solicitar GPU en tus Pods de Autopilot, consulta Implementa cargas de trabajo de GPU en Autopilot.
Solicitudes de recursos para la separación de cargas de trabajo y la duración extendida
Autopilot te permite manipular el comportamiento de programación y desalojo de Kubernetes con métodos como los siguientes:
- Usa taints y tolerancias y selectores de nodos para garantizar que ciertos Pods solo se coloquen en nodos específicos. Si deseas obtener detalles, consulta Configura la separación de cargas de trabajo en GKE.
- Usa la antiafinidad de Pods para evitar que los Pods se ubiquen en el mismo nodo. Las solicitudes de recursos predeterminadas y mínimas para las cargas de trabajo que usan estos métodos para controlar el comportamiento de programación son más altas que las que no lo hacen.
- Usa una anotación para proteger los Pods de la expulsión causada por las actualizaciones automáticas de nodos y los eventos de reducción de escala durante un máximo de siete días. Para obtener más información, consulta Extiende el tiempo de ejecución de los Pods de Autopilot.
Si tus solicitudes especificadas son menores que los mínimos, el comportamiento de Autopilot cambia según el método que usaste, de la siguiente manera:
- Taints, tolerancias, selectores y Pods de duración extendida: Autopilot modifica tus Pods para aumentar las solicitudes cuando se programan los Pods.
- Antiafinidad de Pods: Autopilot rechaza el Pod y muestra un mensaje de error.
En la siguiente tabla, se describen las solicitudes predeterminadas y las solicitudes de recursos mínimas que puedes especificar. Si una configuración o clase de procesamiento no se encuentra en esta tabla, Autopilot no aplica valores mínimos especiales ni predeterminados.
Clase de procesamiento | Recurso | Predeterminado | Mínimo |
---|---|---|---|
Uso general | CPU | 0.5 CPU virtual | 0.5 CPU virtual |
Memoria | 2 GiB | 0.5 GiB | |
Equilibrado | CPU | 2 CPU virtuales | 1 CPU virtual |
Memoria | 8 GiB | 4 GiB | |
Escalar horizontalmente | CPU | 0.5 CPU virtual | 0.5 CPU virtual |
Memoria | 2 GiB | 2 GiB |
Contenedores Init
Los contenedores init se ejecutan de forma secuencial, y todos los contenedores init deben terminar de ejecutarse antes de que se puedan iniciar los contenedores de la aplicación. En los clústeres de Autopilot, si no especificas solicitudes de CPU o memoria para los contenedores init, o bien si estableces solicitudes de forma explícita en 0
, Autopilot modifica tus Pods durante la creación para agregar solicitudes de recursos a cada contenedor init. Las solicitudes asignadas a cada contenedor init son iguales a la suma de las solicitudes de todos los contenedores de la aplicación en el Pod. Este es el comportamiento predeterminado.
Este comportamiento difiere de los clústeres estándar, en los que los contenedores init usan cualquier recurso sin asignar disponible en el nodo en el que está programado el Pod.
Asignación automática de recursos para contenedores de inicialización
La asignación automática de recursos para los contenedores de inicialización se produce en el momento de la creación del Pod. Te sugerimos que no especifiques manualmente solicitudes de recursos para los contenedores init en los clústeres de Autopilot, de modo que cada contenedor obtenga los recursos completos disponibles para el Pod de forma predeterminada.
Si cambias las solicitudes de recursos de los contenedores que no son init en el Pod después de la creación, Autopilot no ajusta automáticamente las solicitudes de recursos de los contenedores init. Como resultado, es posible que observes cargos que no coincidan con el uso real de recursos del Pod. Tu factura se basa en la solicitud de recursos efectiva del Pod, que es la mayor de las siguientes:
- Es la solicitud de recursos más grande de cualquier contenedor init individual en el Pod.
- Es la suma de las solicitudes de todos los contenedores de la aplicación en el Pod.
Para obtener más información, consulta Administración automática de recursos en Autopilot.
Asignación manual de recursos para contenedores init
Si necesitas cambiar las solicitudes de recursos existentes para los contenedores de tu aplicación y, así, administrar los costos y los recursos, te recomendamos que realices una de las siguientes acciones para ajustar las solicitudes de tu contenedor init:
- Actualiza manualmente las solicitudes de recursos del contenedor init para que coincidan con las nuevas solicitudes totales del Pod. Ten en cuenta lo siguiente cuando especifiques manualmente las solicitudes de recursos:
- Las solicitudes inferiores a los recursos totales del Pod pueden limitar el contenedor init.
- Las solicitudes superiores a los recursos totales del Pod pueden aumentar los costos.
- Quita las solicitudes de recursos para permitir que Autopilot las vuelva a calcular. De forma predeterminada, Autopilot volverá a asignar los recursos a cada contenedor init según los recursos totales actuales solicitados por todos los contenedores de la aplicación en el Pod.
Cómo establecer límites de recursos en Autopilot
Kubernetes te permite configurar requests
y limits
para los recursos en la especificación del Pod. El comportamiento de tus Pods cambia según si tus limits
son diferentes de tus requests
, como se describe en la siguiente tabla:
Valores establecidos | Comportamiento de Autopilot |
---|---|
requests igual a limits |
Los Pods usan la clase QoS Guaranteed .
|
requests establecido, limits no establecido |
El comportamiento depende de si tu clúster admite ráfagas, de la siguiente manera:
Para verificar si tu clúster admite el aumento de actividad, consulta Disponibilidad del aumento de actividad en GKE. |
requests no establecido, limits establecido |
Autopilot establece requests en el valor de limits , que es el comportamiento predeterminado de Kubernetes.
Antes: resources: limits: cpu: "400m" Después: resources: requests: cpu: "400m" limits: cpu: "400m" |
requests menos que limits |
El comportamiento depende de si tu clúster admite ráfagas, de la siguiente manera:
Para verificar si tu clúster admite el aumento de actividad, consulta Disponibilidad del aumento de actividad en GKE. |
requests mayor que limits |
Autopilot establece requests en el valor de limits .
Antes: resources: requests: cpu: "450m" limits: cpu: "400m" Después: resources: requests: cpu: "400m" limits: cpu: "400m" |
requests no fijado, limits no fijado |
Autopilot establece El comportamiento de
Para verificar si tu clúster admite el aumento de actividad, consulta Disponibilidad del aumento de actividad en GKE. |
En la mayoría de las situaciones, debes establecer las solicitudes de recursos adecuadas y los límites iguales para las cargas de trabajo.
En el caso de las cargas de trabajo que necesitan más recursos que su estado estable de forma temporal, como durante el arranque o durante períodos de tráfico más altos, establece tus límites más altos que las solicitudes para permitir que los Pods generen aumentos de actividad. Para obtener más información, consulta Configura el aumento de actividad de Pods en GKE.
Administración automática de recursos en Autopilot
Si tus solicitudes de recursos especificadas para tus cargas de trabajo están fuera de los rangos permitidos o si no solicitas recursos para algunos contenedores, Autopilot modifica tu configuración de cargas de trabajo para cumplir con los límites permitidos. Autopilot calcula las proporciones de recursos y los requisitos de escalamiento vertical de recursos después de aplicar valores predeterminados a los contenedores sin ninguna solicitud especificada.
- Solicitudes faltantes: Si no solicitas recursos en algunos contenedores, Autopilot aplica las solicitudes predeterminadas para la clase de procesamiento o la configuración de hardware.
- Proporción de CPU:memoria: Autopilot escala verticalmente el recurso más pequeño para tener la proporción dentro del rango permitido.
- Almacenamiento efímero: Autopilot modifica tus solicitudes de almacenamiento efímero para cumplir con la cantidad mínima requerida por cada contenedor. El valor acumulado de las solicitudes de almacenamiento en todos los contenedores no puede ser mayor que el valor máximo permitido. En versiones anteriores a la 1.28.6-gke.1317000, Autopilot reduce la escala del almacenamiento efímero solicitado si el valor supera el máximo. En la versión 1.28.6-gke.1317000 y posteriores, Autopilot rechaza tu carga de trabajo.
- Solicitudes por debajo de los mínimos: Si solicitas menos recursos que el mínimo permitido para la configuración de hardware seleccionada, Autopilot modifica automáticamente el Pod a fin de solicitar, al menos, el valor de recurso mínimo.
De forma predeterminada, cuando Autopilot ajusta automáticamente un recurso para cumplir con un valor de recurso mínimo o predeterminado, GKE asigna la capacidad adicional al primer contenedor en el manifiesto del Pod. En la versión 1.27.2-gke.2200 y posteriores de GKE, puedes indicarle a GKE que asigne los recursos adicionales a un contenedor específico si agregas lo siguiente al campo annotations
en el manifiesto del Pod:
autopilot.gke.io/primary-container: "CONTAINER_NAME"
Reemplaza CONTAINER_NAME
por el nombre del contenedor.
Ejemplos de modificaciones de recursos
En la siguiente situación de ejemplo, se muestra cómo Autopilot modifica la configuración de la carga de trabajo para cumplir con los requisitos de tus contenedores y Pods en ejecución.
Contenedor único con < 0.05 CPU virtuales
Cantidad de contenedores | Solicitud original | Solicitud modificada |
---|---|---|
1 |
CPU: 30 mCPU Memoria: 0.5 GiB Almacenamiento efímero: 10 MiB |
CPU: 50 mCPU Memoria: 0.5 GiB Almacenamiento efímero: 10 MiB |
Varios contenedores con CPU total < 0.05 CPUs virtuales
Cantidad de contenedores | Solicitudes originales | Solicitudes modificadas |
---|---|---|
1 | CPU: 10 mCPU Memoria: 0.5 GiB Almacenamiento efímero: 10 MiB |
CPU: 30 mCPU Memoria: 0.5 GiB Almacenamiento efímero: 10 MiB |
2 | CPU: 10 mCPU Memoria: 0.5 GiB Almacenamiento efímero: 10 MiB |
CPU: 10 mCPU Memoria: 0.5 GiB Almacenamiento efímero: 10 MiB |
3 | CPU: 10 mCPU Memoria: 0.5 GiB Almacenamiento efímero: 10 MiB |
CPU: 10 mCPU Memoria: 0.5 GiB Almacenamiento efímero: 10 MiB |
Total de recursos del Pod | CPU: 50 mCPU Memoria: 1.5 GiB Almacenamiento efímero: 30 MiB |
Un solo contenedor con memoria demasiado baja para la CPU solicitada
En este ejemplo, la memoria es demasiado baja para la cantidad de CPU (1 CPU virtual:1 GiB como mínimo). La proporción mínima permitida de CPU y memoria es 1:1. Si la proporción es menor que eso, la solicitud de memoria se incrementa.
Cantidad de contenedores | Solicitud original | Solicitud modificada |
---|---|---|
1 | CPU: 4 vCPU Memoria: 1 GiB Almacenamiento efímero: 10 MiB |
CPU: 4 vCPU Memoria: 4 GiB Almacenamiento efímero: 10 MiB |
Total de recursos del Pod | CPU: 4 vCPU Memoria: 4 GiB Almacenamiento efímero: 10 MiB |
¿Qué sigue?
- Obtén información sobre cómo seleccionar clases de procesamiento en tus cargas de trabajo de Autopilot.
- Obtén más información sobre las clases de procesamiento de Autopilot compatibles.
- Obtén más información para seleccionar GPUs en tus Pods de Autopilot.