Optimizar el rendimiento de Autopilot Pod eligiendo una serie de máquinas

En esta página se explica cómo colocar cargas de trabajo en una serie de máquinas de Compute Engine específica para optimizar el rendimiento de las cargas de trabajo en los clústeres Autopilot de Google Kubernetes Engine (GKE).

Asegúrate de que conoces los siguientes aspectos:

Cómo funciona la selección de series de máquinas

Puedes añadir un cloud.google.com/machine-family selector de nodos 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 necesiten más potencia de CPU o la serie de máquinas N1 para los pods que necesiten más memoria. Para ejecutar tu carga de trabajo de forma óptima, Autopilot aprovisiona uno de los tipos de máquinas predefinidos de la serie de máquinas que hayas seleccionado.

Además de ofrecer un rendimiento óptimo de los pods, elegir una serie de máquinas específica ofrece las siguientes ventajas:

  • Uso eficiente de los nodos: de forma predeterminada, Autopilot optimiza el uso de los recursos de los nodos programando en cada nodo tantos pods como sea posible que soliciten la misma serie de máquinas. Esta estrategia 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 configurarla para que solicite un pod por cada nodo.

  • Cargas de trabajo con picos: puedes configurar pods para que aprovechen la capacidad de recursos sin usar del nodo. Para ello, define límites de recursos superiores a tus solicitudes. Para obtener más información, consulta Configurar el bursting de pods en GKE.

Planifica un nodo dedicado para cada pod

Si tienes cargas de trabajo que requieren mucha CPU y necesitan un acceso fiable 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 recomienda usar nodos dedicados por pod cuando ejecutes cargas de trabajo a gran escala que requieran un uso intensivo de la CPU, como cargas de trabajo de entrenamiento de IA o aprendizaje automático, o cargas de trabajo por lotes de computación de alto rendimiento (HPC).

Elegir entre la programación de varios pods y la de un solo pod

Sigue estas directrices para elegir un comportamiento de programación de pods en función de tus requisitos:

Precios

Compute Engine te factura la VM subyacente y el hardware conectado, además de una prima por la gestión y la escalabilidad de los nodos de Autopilot. Para obtener más información, consulta los precios de GKE.

Antes de empezar

Antes de empezar, asegúrate de que has realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.
  • Asegúrate de que tienes un clúster de Autopilot con la versión 1.30.1-gke.1396000 o una posterior. Para crear un clúster, consulta Crear un clúster de Autopilot.

Seleccionar 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 archivo de 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
    

    Sustituye MACHINE_SERIES por la serie de máquinas de Compute Engine de tu pod, como c3. Para ver los valores admitidos, consulta la sección Series de máquinas admitidas de esta página.

  2. Despliega el pod:

    kubectl apply -f machine-series-pod.yaml
    

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

Usar SSDs 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 ofrezca SSD local. Autopilot tiene en cuenta las solicitudes de almacenamiento efímero al elegir un tipo de máquina de Compute Engine para el pod.

Para obtener más información, consulta Usar almacenamiento efímero respaldado por SSD local con clústeres de Autopilot.

Solicitar un nodo dedicado para un pod

Si tu pod tiene requisitos de rendimiento específicos, como la necesidad de acceder de forma fiable 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 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 impide que Autopilot programe otros pods en ese nodo.

  1. Guarda el siguiente archivo de 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"
    

    Sustituye MACHINE_SERIES por una serie de máquinas admitida 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 falla y se produce un error.

  2. Despliega el pod:

    kubectl apply -f dedicated-node-pod.yaml
    

Cuando implementas este archivo de manifiesto, Autopilot hace lo siguiente:

  • Asegura que el pod implementado solicite al menos los recursos mínimos del nodo optimizado para el rendimiento.
  • Calcula las solicitudes de recursos totales del pod implementado y de cualquier DaemonSet del 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 asegurarse de que el pod se ejecute en su propio nodo.

Series de máquinas admitidas

El selector de 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 prácticos, consulta la 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 1.33.0-gke.1439000 y versiones posteriores.
  • Tipos de máquinas C4D con SSD local: GKE 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 funciones y las características de GKE compatibles con esa serie de máquinas, como las siguientes:

Los pódcasts de actualidad y los pódcasts de larga duración se excluyen mutuamente. GKE no aplica solicitudes de recursos mínimos más altas 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 de la serie de máquinas especificada, GKE calcula las solicitudes totales de CPU, memoria y almacenamiento efímero de los pods y de los DaemonSets que se ejecutarán en el nuevo nodo. GKE redondea estos valores al tipo de máquina de Compute Engine disponible más cercano que admita todos estos totales.

  • Ejemplo 1: Supongamos que tienes 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:

    • 500 m vCPU (0,5 vCPU)
    • 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 vCPUs y 16 GB de memoria.

  • Ejemplo 2: Supongamos que tienes un pod que selecciona la serie de máquinas C3D y las SSD 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 vCPUs
    • 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 vCPUs, 64 GiB de memoria y 365 GiB de capacidad de SSD local.

Siguientes pasos