Elige una serie de máquinas para optimizar el rendimiento de los pods de Autopilot

En este documento, se muestra cómo colocar cargas de trabajo en una serie de máquinas de Compute Engine específica 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 campos:

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 del Pod para que Autopilot asigne hardware de Compute Engine específico 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. Para ejecutar tu carga de trabajo de forma óptima, Autopilot aprovisiona uno de los tipos predefinidos de máquinas de la serie de máquinas que seleccionaste.

Además del 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 de los nodos programando en cada nodo la mayor cantidad posible de Pods que soliciten 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 acceso a todos los recursos del nodo, puedes configurarla de manera opcional para que solicite un Pod para cada nodo.

  • Cargas de trabajo con capacidad de aumento de actividad: Puedes configurar los Pods para que aumenten la actividad en la 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.

Planifica un nodo dedicado para cada Pod

Si tienes cargas de trabajo con uso intensivo de CPU que necesitan acceso confiable a todos los recursos del nodo, puedes configurar tu Pod 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 de uso intensivo de CPU a gran escala, como las de entrenamiento de IA/AA o las de computación de alto rendimiento (HPC) por lotes.

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:

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 detalles, 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
  • Para usar Google Cloud CLI en esta tarea, instala y, luego, inicializa la 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 de 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.

  1. 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, como c3. Para conocer los valores admitidos, consulta Series de máquinas compatibles en esta página.

  2. Implementa el Pod:

    kubectl apply -f machine-series-pod.yaml
    

Este manifiesto permite que Autopilot optimice el uso de recursos de los nodos programando de forma 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 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 de Autopilot.

Solicita un nodo dedicado para un Pod

Si tu Pod tiene requisitos de rendimiento específicos, como la necesidad de 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 máquinas. Esto 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.

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

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

Si no especificas una serie de máquinas cuando seleccionas la clase de rendimiento, GKE usa la serie de máquinas C4 si los tipos de máquinas C4 están disponibles 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.

Limitaciones

  • La ComputeClass de rendimiento predefinida no admite tipos de máquinas de equipos físicos, como c3-standard-192-metal, c4a-standard-72-metal y c4d-standard-384-metal. Para usar estos tipos de máquinas con Autopilot o la creación automática de grupos de nodos, especifica el tipo de máquina exacto en una ComputeClass personalizada.

Requisitos de la versión

Consulta los siguientes requisitos de versión para series de máquinas específicas:

  • C4N: GKE versión 1.36.0-gke.3009002 y posteriores
  • C4D: Versión 1.32.9-gke.1711000 y posteriores de GKE
  • N4D:
    • GKE versión 1.33.13-gke.1079000 y posteriores
    • GKE versión 1.34.1-gke.2037000 y posteriores
  • Tipos de equipos físicos C3 y C4A: Versión 1.35.3-gke.1389000 y posteriores de GKE (con una ComputeClass personalizada).
  • Tipos de equipos físicos C4D: GKE versión 1.37.0-gke.4713000 y posteriores (con una ComputeClass personalizada).
  • Z4D: Versión 1.36.3-gke.1244000 y posteriores de GKE.

Compatibilidad con otras funciones de GKE

Los Pods que seleccionan una serie de máquinas pueden usar las capacidades y funciones de GKE que admite esa serie de máquinas, como las siguientes:

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 dedicados por nodo, aunque usen 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 las solicitudes totales de CPU, memoria y almacenamiento efímero de los Pods y cualquier DaemonSet que se ejecutará 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 un 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:

    • CPU virtual de 500 m (0.5 CPU virtuales)
    • 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 de recursos totales, 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?