En esta página, se muestra cómo colocar cargas de trabajo en una serie de máquinas de Compute Engine específica para lograr un rendimiento óptimo de las cargas de trabajo en tus clústeres de Google Kubernetes Engine (GKE) Autopilot.
Asegúrate de conocer los siguientes campos:
- Series de máquinas y casos de uso de Compute Engine
- Requisitos a nivel de kernel para tus aplicaciones
Cómo funciona la selección de series de máquinas
Puedes agregar un selector de nodos cloud.google.com/machine-family
a la especificación de tu Pod para que Autopilot asigne hardware específico de Compute Engine a ese Pod. Por ejemplo, puedes elegir la serie de máquinas C3 para los Pods que necesitan más potencia de CPU o la serie de máquinas N1 para los Pods que necesitan más memoria.
Para ejecutar de forma óptima tu carga de trabajo, Autopilot aprovisiona uno de los tipos de máquinas predefinidos de la serie de máquinas que seleccionaste.
Además del rendimiento óptimo del Pod, elegir una serie de máquinas específica ofrece los siguientes beneficios:
Uso eficiente de los nodos: De forma predeterminada, Autopilot optimiza el uso de recursos de los nodos programando en cada nodo la mayor cantidad posible de Pods que solicitan la misma serie de máquinas. Este enfoque optimiza el uso de recursos en el nodo, lo que mejora la relación precio-rendimiento. Si tu carga de trabajo necesita acceder a todos los recursos del nodo, puedes configurar tu carga de trabajo para que solicite un Pod para cada nodo.
Cargas de trabajo con capacidad de generar picos de actividad: Puedes configurar los Pods para que generen picos de actividad en la capacidad de recursos sin usar del nodo estableciendo límites de recursos más altos que las solicitudes. Para obtener más información, consulta Configura el aumento de actividad de Pods en GKE.
Planifica un nodo dedicado para cada Pod
Si tienes cargas de trabajo que requieren un uso intensivo de la CPU y necesitan acceso confiable a todos los recursos del nodo, puedes configurar tu Pod de forma opcional para que Autopilot coloque un Pod que solicite una serie de máquinas en su propio nodo.
Se recomiendan los nodos dedicados por Pod cuando ejecutas cargas de trabajo a gran escala con uso intensivo de CPU, como cargas de trabajo de entrenamiento de IA/AA o cargas de trabajo por lotes de computación de alto rendimiento (HPC).
Elige entre la programación de varios Pods y la de un solo Pod
Usa la siguiente guía para elegir un comportamiento de programación de Pods según tus requisitos:
- Si tienes Pods que pueden compartir recursos de procesamiento con otros Pods o quieres optimizar los costos mientras ejecutas Pods en hardware especializado, usa el comportamiento de programación predeterminado de varios Pods por nodo.
- Si tienes Pods que necesitan acceso confiable a los recursos completos del nodo o deseas minimizar la posibilidad de interrupciones causadas por el uso compartido de recursos de procesamiento, solicita un nodo dedicado para cada Pod.
Precios
Se te factura la VM subyacente y cualquier hardware conectado por Compute Engine, además de un recargo por la administración y escalabilidad de los nodos de Autopilot. Para obtener más información, consulta Precios de GKE.
Antes de comenzar
Antes de comenzar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando
gcloud components update
para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.
- Asegúrate de tener un clúster de Autopilot existente que ejecute la versión 1.30.1-gke.1396000 o posterior. Para crear un clúster, consulta Crea un clúster de Autopilot.
Selecciona una serie de máquinas
En esta sección, se muestra cómo seleccionar una serie de máquinas de Compute Engine específica en un Pod.
Guarda el siguiente manifiesto como
machine-series-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 5 memory: "25Gi" limits: cpu: 20 memory: 100Gi
Reemplaza
MACHINE_SERIES
por la serie de máquinas de Compute Engine para tu Pod, comoc3
. Para obtener los valores admitidos, consulta Series de máquinas admitidas en esta página.Implementa el Pod:
kubectl apply -f machine-series-pod.yaml
Este manifiesto permite que Autopilot optimice el uso de recursos del nodo programando de manera eficiente otros Pods que seleccionan la misma serie de máquinas en el mismo nodo si hay capacidad disponible.
Usa SSD locales
Los Pods que seleccionan una serie de máquinas pueden usar SSDs locales para el almacenamiento efímero si especificas una serie de máquinas que ofrece SSDs locales. Autopilot considera las solicitudes de almacenamiento efímero cuando elige un tipo de máquina de Compute Engine para el Pod.
Para obtener más información, consulta Usa el almacenamiento efímero respaldado por SSD local con clústeres en modo Autopilot.
Solicita un nodo dedicado para un Pod
Si tu Pod tiene requisitos de rendimiento específicos, como la necesidad de un acceso confiable a todos los recursos de tu nodo, puedes solicitar un nodo dedicado para cada Pod especificando el selector de nodos cloud.google.com/compute-class: Performance
junto con el selector de nodos de la serie de tu máquina. Esto le indica a Autopilot que coloque tu Pod en un nodo nuevo que use la serie de máquinas especificada y que esté dedicado a ese Pod.
Este selector de nodos también evita que Autopilot programe otros Pods en ese nodo.
Guarda el siguiente manifiesto como
dedicated-node-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: dedicated-node-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/compute-class: Performance containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral: "200Gi"
Reemplaza
MACHINE_SERIES
por una serie de máquinas compatible que también admita la programación de un Pod por nodo. Si la serie de máquinas especificada no admite la programación de un Pod por nodo, la implementación fallará y mostrará un error.Implementa el Pod:
kubectl apply -f dedicated-node-pod.yaml
Cuando implementas este manifiesto, Autopilot hace lo siguiente:
- Garantiza que el Pod implementado solicite, al menos, los recursos mínimos para el nodo optimizado para el rendimiento.
- Calcula el total de solicitudes de recursos del Pod implementado y cualquier DaemonSet en el clúster.
- Aprovisiona un nodo respaldado por la serie de máquinas seleccionada.
- Modifica el manifiesto del Pod con una combinación de selectores de nodos y tolerancias para garantizar que el Pod se ejecute en su propio nodo.
Serie de máquinas compatible
El selector machine-family
admite las siguientes series de máquinas:
Ten en cuenta que c4
es el valor predeterminado si no se especifica la serie de máquinas y si c4
está disponible en una región.
Para comparar estas series de máquinas y sus casos de uso, consulta Comparación de series de máquinas en la documentación de Compute Engine.
Requisitos de la versión
La serie de máquinas C4D está disponible con las siguientes versiones y configuraciones:
- Tipos de máquinas C4D sin SSD local: GKE versión 1.33.0-gke.1439000 y versiones posteriores.
- Tipos de máquinas C4D con SSD local: GKE versión 1.33.1-gke.1171000 y versiones posteriores
Compatibilidad con otras funciones de GKE
Los Pods que seleccionan una serie de máquinas pueden usar las capacidades y características de GKE compatibles con esa serie de máquinas, como las siguientes:
- Spot Pods
- Pods de tiempo de ejecución extendido (solo con nodos dedicados por Pod)
- Separación de cargas de trabajo
- Reservas de capacidad
- Descuentos por compromiso de uso
Los Pods Spot y los Pods de tiempo de ejecución extendidos son mutuamente excluyentes. GKE no aplica solicitudes de recursos mínimos más altos para los Pods dedicados por nodo, aunque usen la separación de cargas de trabajo.
Cómo selecciona GKE un tipo de máquina
Para seleccionar un tipo de máquina en la serie especificada, GKE calcula las solicitudes totales de CPU, memoria y almacenamiento efímero de los Pods y los DaemonSets que se ejecutarán en el nodo nuevo. GKE redondea estos valores hasta el tipo de máquina de Compute Engine disponible más cercano que admita todos estos totales.
Ejemplo 1: Considera una Deployment con cuatro réplicas que selecciona la serie de máquinas C3D. No solicitas nodos dedicados por Pod. Las solicitudes de recursos de cada réplica son las siguientes:
- 500 mCPU (0.5 CPU virtual)
- 1 GiB de memoria
Autopilot coloca los cuatro Pods en un nodo respaldado por el tipo de máquina
c3d-standard-4
, que tiene 4 CPU virtuales y 16 GB de memoria.Ejemplo 2: Considera un Pod que selecciona la serie de máquinas
C3D
y los SSDs locales para el almacenamiento efímero. Solicitas un nodo dedicado para el Pod. Las solicitudes totales de recursos, incluidos los DaemonSets, son las siguientes:- 12 CPU virtuales
- 50 GiB de memoria
- 200 GiB de almacenamiento efímero
Autopilot coloca el Pod en un nodo que usa el tipo de máquina
c3d-standard-16-lssd
, que tiene 16 CPU virtuales, 64 GiB de memoria y 365 GiB de capacidad de SSD local.
¿Qué sigue?
- Para obtener orientación sobre las opciones de procesamiento que ofrece Autopilot para varios casos de uso, consulta Clases de procesamiento en Autopilot.
- Implementa cargas de trabajo basadas en GPU en Autopilot.