Ejecuta cargas de trabajo de uso intensivo de CPU con un rendimiento óptimo


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:

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.

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:

Implementa un Pod de clase de rendimiento

  1. 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, como c3. Para obtener los valores admitidos, consulta Serie de máquinas compatibles en este documento.

  2. 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.

  1. 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.

  2. 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:

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?