Elige clases de procesamiento para los Pods de Autopilot


En este documento, se muestra cómo seleccionar clases de procesamiento específicas para ejecutar cargas de trabajo que tienen requisitos de hardware únicos en tus clústeres de Google Kubernetes Engine (GKE) Autopilot. Antes de leer este documento, asegúrate de estar familiarizado con el concepto de clases de procesamiento en GKE Autopilot.

Descripción general de las clases de procesamiento de Autopilot

Autopilot ofrece clases de procesamiento diseñadas para ejecutar cargas de trabajo que tienen requisitos de hardware específicos. Estas clases de procesamiento son útiles para cargas de trabajo como las tareas de IA y aprendizaje automático, o la ejecución en tiempo real de bases de datos de tráfico alto.

Estas clases de procesamiento son un subconjunto de las series de máquinas de Compute Engine y ofrecen flexibilidad más allá de la clase de procesamiento de uso general de Autopilot predeterminada. Por ejemplo, la clase Scale-Out desactiva los subprocesos múltiples simultáneos para que cada CPU virtual sea un núcleo físico.

En función de las necesidades de Pods individuales, puedes configurar los Pods de Autopilot regulares o los Pods Spot para solicitar nodos respaldados por estas clases de procesamiento. También puedes solicitar una arquitectura de CPU específica, como Arm, en las clases de procesamiento que admiten esa arquitectura.

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.

Solicita una clase de procesamiento en tu Pod de Autopilot

Para indicarle a Autopilot que coloque tus Pods en una clase de procesamiento específica, especifica la etiqueta cloud.google.com/compute-class en un nodeSelector o una regla de afinidad de nodos, como en los siguientes ejemplos:

nodeSelector

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: hello-app
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          nodeSelector:
            cloud.google.com/compute-class: "COMPUTE_CLASS"
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              requests:
                cpu: "2000m"
                memory: "2Gi"
    

Reemplaza COMPUTE_CLASS por el nombre de la clase de procesamiento según tu caso de uso, como Scale-Out. Si seleccionas Accelerator, también debes especificar una GPU compatible. Para obtener instrucciones, consulta Implementa cargas de trabajo de GPU en Autopilot. Si seleccionas Performance, también debes seleccionar una serie de máquinas de Compute Engine en el selector de nodos. Para obtener instrucciones, consulta Ejecuta cargas de trabajo de uso intensivo de CPU con un rendimiento óptimo.

nodeAffinity

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: hello-app
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          terminationGracePeriodSeconds: 25
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              requests:
                cpu: "2000m"
                memory: "2Gi"
                ephemeral-storage: "1Gi"
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: cloud.google.com/compute-class
                    operator: In
                    values:
                    - "COMPUTE_CLASS"
      

Reemplaza COMPUTE_CLASS por el nombre de la clase de procesamiento según tu caso de uso, como Scale-Out. Si seleccionas Accelerator, también debes especificar una GPU compatible. Para obtener instrucciones, consulta Implementa cargas de trabajo de GPU en Autopilot. Si seleccionas Performance, también debes seleccionar una serie de máquinas de Compute Engine en el selector de nodos. Para obtener instrucciones, consulta Ejecuta cargas de trabajo de uso intensivo de CPU con un rendimiento óptimo.

También puedes solicitar clases de procesamiento específicas para tus Pods Spot.

Especifica solicitudes de recursos

Cuando elijas una clase de procesamiento, asegúrate de especificar solicitudes de recursos para tus Pods en función de las solicitudes de recursos mínimas y máximas de la clase que seleccionaste. Si tus solicitudes son menores que el mínimo, Autopilot aumentará la escala de tus solicitudes automáticamente. Sin embargo, si tus solicitudes son mayores que el máximo, Autopilot no implementa tus Pods y muestra un mensaje de error.

Elige una arquitectura de CPU

Algunas clases de procesamiento admiten varias arquitecturas de CPU. Por ejemplo, la clase Scale-Out admite arquitecturas Arm y x86. Si no solicitas una arquitectura específica, Autopilot aprovisiona nodos que tienen la arquitectura predeterminada de la clase de procesamiento especificada. Si tus Pods deben usar una arquitectura diferente, solicita esa arquitectura en tu selector de nodos o en la regla de afinidad de nodos, junto con tu solicitud de clase de procesamiento. La clase de procesamiento que solicites debe ser compatible con la arquitectura de CPU que especifiques.

Para obtener instrucciones, consulta Implementa Pods de Autopilot en la arquitectura Arm.

¿Qué sigue?