En esta página, se muestra cómo optimizar las cargas de trabajo de uso intensivo de CPU para el rendimiento si le indicas a Google Kubernetes Engine (GKE) que coloque cada Pod en su propio nodo, con acceso completo a todos los recursos del nodo. Para usar este modelo de ubicación de Pods, solicita la clase de procesamiento de rendimiento en tus cargas de trabajo de Autopilot.
Beneficios de la clase de procesamiento de rendimiento
Los nodos dedicados por Pod son ideales cuando ejecutas cargas de trabajo de uso intensivo de CPU a gran escala que pueden necesitar acceso a las capacidades de la máquina virtual (VM) subyacente. Por ejemplo, las cargas de trabajo de entrenamiento de IA/AA con uso intensivo de CPU o las cargas de trabajo por lotes de computación de alto rendimiento (HPC).
Los Pods en estos nodos dedicados tienen los siguientes beneficios:
- Rendimiento predecible: Accede a todos los recursos de nodo en cualquier momento.
- Cargas de trabajo con alto rendimiento: Si no estableces límites de recursos en los manifiestos, los Pods de la clase de rendimiento pueden generar aumentos de actividad en toda la capacidad sin usar en el nodo con un riesgo mínimo de expulsión de presión nodos de Kubernetes.
Cómo funcionan los Pods de la clase de rendimiento
Implementa un Pod que tiene las siguientes características:
- Selecciona la clase de rendimiento y una serie de máquinas de Compute Engine.
- Especifica las solicitudes de recursos y, lo ideal, no especifica límites de recursos.
GKE hace lo siguiente:
- Garantiza que el Pod implementado solicite al menos los recursos mínimos para la clase de procesamiento.
- 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
- Se modifica el manifiesto del pod con una combinación de selectores y tolerancias de nodos para garantizar que el pod se ejecute en su propio nodo.
Compatibilidad con otras funciones de GKE
Puedes usar los Pods de clase de rendimiento con las siguientes capacidades y características de GKE:
- Spot Pods
- Pods de tiempo de ejecución extendido
- 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ínimas más altas para los Pods de clase de rendimiento que usan la separación de cargas de trabajo.
Precios
Tu Pod puede usar toda la VM subyacente y cualquier hardware conectado en cualquier momento, y Compute Engine te facturará por este hardware, con un recargo para la administración y escalabilidad de nodos de Autopilot. Para obtener más información, consulta los 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 estar familiarizado con los siguientes sistemas:
- Series de máquinas y casos de uso de Compute Engine
- Requisitos a nivel de kernel para tus aplicaciones
- Asegúrate de tener un clúster de Autopilot existente que ejecute la versión 1.28.6-gke.1369000 y posteriores, o la versión 1.29.1-gke.1575000 y posteriores. Para crear un clúster, consulta Crea un clúster de Autopilot.
Conéctate a tu clúster.
Usa Google Cloud CLI para conectarte a tu clúster de Autopilot:
gcloud container clusters get-credentials CLUSTER_NAME \
--location=LOCATION
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre de tu clúster.LOCATION
: la ubicación de Compute Engine del clúster.
Implementa un Pod de clase de rendimiento
Guarda el siguiente manifiesto como
perf-class-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: performance-pod spec: nodeSelector: cloud.google.com/compute-class: Performance cloud.google.com/machine-family: MACHINE_SERIES containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: 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 Serie de máquinas compatibles en este documento.Implementa el Pod:
kubectl apply -f perf-class-pod.yaml
Usa SSDs locales en Pods de clases de rendimiento
Los Pods de clase de rendimiento pueden usar SSDs locales para el almacenamiento efímero si seleccionas una serie de máquinas que incluye una SSD local. GKE considera las solicitudes de almacenamiento efímeras cuando aprovisiona un nodo para el Pod de clase de rendimiento.
Guarda el siguiente manifiesto como
perf-class-ssd-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: performance-pod spec: nodeSelector: cloud.google.com/compute-class: Performance 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: 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 perf-class-pod.yaml
Serie de máquinas compatible
La clase de procesamiento de rendimiento admite las siguientes series de máquinas:
- Serie de máquinas C3:
c3
(SSD locales disponibles) - Serie de máquinas C3D:
c3d
(SSD locales disponibles) - Serie de máquinas H3:
h3
- Serie de máquinas C2:
c2
- Serie de máquinas C2D:
c2d
- Serie de máquinas T2D:
t2d
- Serie de máquinas T2A:
t2a
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.
Cómo GKE selecciona un tamaño de máquina
Para seleccionar un tamaño de máquina en la serie de máquinas especificada, GKE calcula la cantidad total de solicitudes de CPU, memoria total y almacenamiento efímero total del Pod de clase de rendimiento y cualquier DaemonSet que se ejecutará en el nodo nuevo. GKE redondea estos valores al tipo de máquina de Compute Engine disponible más cercano que admita todos estos totales.
Ejemplo 1: Considera un Pod de clase de rendimiento que selecciona la serie de máquinas
C3
. El total de solicitudes de recursos, incluidos los DaemonSets, es la siguiente:- 70 CPUs virtuales
- 200 GiB de memoria
GKE coloca el Pod en un nodo respaldado por el tipo de máquina
c3-standard-88
, que tiene 88 CPU virtuales y 352 GB de memoria.Ejemplo 2: Considera un Pod de clase de rendimiento que selecciona la serie de máquinas
C3D
y los SSDs locales para el almacenamiento efímero. El total de solicitudes de recursos, incluidos los DaemonSets, es la siguiente:- 12 CPU virtuales
- 50 GiB de memoria
- 200 GiB de almacenamiento efímero
GKE 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?
- Obtén más información sobre las otras clases de procesamiento de Autopilot.
- Implementa cargas de trabajo basadas en GPU en Autopilot