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.
- Asegúrate de tener un clúster de GKE Autopilot que ejecute la versión 1.24.1-gke.1400 o posterior de GKE.
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 etiquetacloud.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?
- Obtén más información sobre la arquitectura del clúster de Autopilot.
- Obtén más información sobre el ciclo de vida de los Pods.
- Obtén más información sobre las clases de procesamiento de Autopilot disponibles.
- Lee acerca de las solicitudes de recursos predeterminadas, mínimas y máximas para cada plataforma.