Elegir clases de computación para pods de Autopilot

En este documento se explica cómo seleccionar clases de computación específicas para ejecutar cargas de trabajo que tengan requisitos de hardware únicos en tus clústeres de Autopilot de Google Kubernetes Engine (GKE). Antes de leer este documento, asegúrate de que conoces el concepto de clases de computación en Autopilot de GKE.

Información general sobre las clases de computación de Autopilot

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

Estas clases de computación son un subconjunto de las series de máquinas de Compute Engine y ofrecen más flexibilidad que la clase de computación de uso general predeterminada de Autopilot. Por ejemplo, la clase Scale-Out desactiva el multihilo simultáneo para que cada vCPU sea un núcleo físico.

En función de las necesidades de tus pods, puedes configurar tus pods de Autopilot normales o tus pods Spot para que soliciten nodos respaldados por estas clases de computación. También puedes solicitar una arquitectura de CPU específica, como Arm, en clases de computación que admitan esa arquitectura.

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.

Solicitar una clase de computación en un pod de Autopilot

Para indicar a Autopilot que coloque tus pods en una clase de computación específica, especifica la etiqueta cloud.google.com/compute-class en un nodeSelector o en una regla de afinidad de nodo, 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"
    

Sustituye COMPUTE_CLASS por el nombre de la clase de computación en función de tu caso práctico, como Scale-Out. Si seleccionas Performance, puedes elegir una serie de máquinas de Compute Engine en el selector de nodos. Si no especificas una serie de máquinas, GKE usará la serie de máquinas C4 en función de la disponibilidad regional. Para obtener instrucciones, consulta Ejecutar cargas de trabajo con 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"
      

Sustituye COMPUTE_CLASS por el nombre de la clase compute en función de tu caso práctico, como Scale-Out. Si seleccionas Performance, puedes elegir una serie de máquinas de Compute Engine en el selector de nodos. Si no especificas una serie de máquinas, GKE usará la serie de máquinas C4 en función de la disponibilidad regional. Para obtener instrucciones, consulta Ejecutar cargas de trabajo con uso intensivo de CPU con un rendimiento óptimo.

También puedes solicitar clases de computación específicas para tus pods esporádicos.

Especificar solicitudes de recursos

Cuando elijas una clase de computación, asegúrate de especificar las solicitudes de recursos de tus pods en función de las solicitudes de recursos mínimas y máximas de la clase seleccionada. Si tus solicitudes son inferiores al mínimo, Autopilot las aumentará automáticamente. Sin embargo, si el número de solicitudes es superior al máximo, Autopilot no desplegará tus pods y mostrará un mensaje de error.

Elegir una arquitectura de CPU

Algunas clases de computación admiten varias arquitecturas de CPU. Por ejemplo, la clase Scale-Out es compatible con las arquitecturas Arm y x86. Si no solicitas una arquitectura específica, Autopilot aprovisiona nodos que tienen la arquitectura predeterminada de la clase de computación especificada. Si tus pods necesitan usar otra arquitectura, solicita esa arquitectura en tu selector de nodos o en tu regla de afinidad de nodos, junto con tu solicitud de clase de computación. La clase de computación que solicites debe admitir la arquitectura de CPU que especifiques.

Para obtener instrucciones, consulta Desplegar pods de Autopilot en una arquitectura Arm.

Siguientes pasos