En esta página, se muestra cómo colocar cargas de trabajo en series de máquinas específicas de Compute Engine para obtener un rendimiento óptimo de las cargas de trabajo en tus clústeres de Autopilot de Google Kubernetes Engine (GKE).
Asegúrate de conocer los siguientes temas:
- Casos de uso y series de máquinas 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 para 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. El piloto automático aprovisiona uno de los tipos de máquinas predefinidos de la serie de máquinas seleccionada para ejecutar tu carga de trabajo de manera óptima.
Además de un rendimiento óptimo de los Pods, 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 del nodo programando la mayor cantidad posible de Pods que soliciten la misma serie de máquinas en cada nodo. Este enfoque optimiza el uso de recursos en el nodo, lo que mejora la relación precio-rendimiento. Si tu carga de trabajo necesita acceso a todos los recursos del nodo, puedes configurarla para que solicite un Pod para cada nodo.
Cargas de trabajo con aumento de actividad: Puedes configurar Pods para que aumenten su capacidad de recursos sin usar en el nodo. Para ello, establece 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.
Solicita un nodo dedicado para cada Pod
Si tienes cargas de trabajo intensivas en la CPU que necesitan acceso confiable a todos los recursos del nodo, puedes configurar tu pod de manera opcional para que Autopilot coloque un pod que solicite una serie de máquinas en su propio nodo.
Se recomiendan 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 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 deseas 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 recursos de nodos completos o deseas minimizar la posibilidad de interrupciones causadas por compartir 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
gcloud components update
para obtener la versión más reciente.
- 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 compatibles 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 seleccionen 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 SSD local. Autopilot considera las solicitudes de almacenamiento efímero cuando elige un tipo de máquina de Compute Engine para el Pod.
Guarda el siguiente manifiesto como
local-ssd-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: local-ssd-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/gke-ephemeral-storage-local-ssd: "true" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 6 memory: "25Gi" ephemeral: "100Gi" limits: cpu: 12 memory: "50Gi" ephemeral: "200Gi"
Reemplaza
MACHINE_SERIES
por una serie de máquinas compatible que también admita SSDs locales. Si la serie de máquinas especificada no es compatible con SSDs locales, la implementación fallará y mostrará un error.Implementa el Pod:
kubectl apply -f local-ssd-pod.yaml
Solicita un nodo dedicado para un Pod
Si tu Pod tiene requisitos de rendimiento específicos, como necesitar 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 tu serie de máquinas. 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:
(siempre se incluye en el paquete) |
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.
Compatibilidad con otras funciones de GKE
Puedes usar Pods que seleccionen series de máquinas con las siguientes capacidades y funciones de GKE:
- 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 altas para Pods dedicados por nodo, a pesar de que usan la separación de cargas de trabajo.
Cómo GKE selecciona un tipo de máquina
Para seleccionar un tipo de máquina en la serie de máquinas especificada, GKE calcula la CPU, la memoria y las solicitudes de almacenamiento efímero totales 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 implementación 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:
- CPU virtual 500 m
- 1 GiB de memoria
Autopilot coloca todos los 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. El total de solicitudes de recursos, incluidos los DaemonSets, es el siguiente:- 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.