Personaliza la configuración del backend con los alcances de GCPBackendPolicy

En un entorno de puerta de enlace de inferencia de Google Kubernetes Engine (GKE) de varios clústeres, puedes aplicar diferentes configuraciones de backend a los servicios implementados en varios clústeres. Por ejemplo, puedes establecer diferentes tasas máximas de solicitudes o factores de ajuste de capacidad para los backends en diferentes regiones o entornos.

Para comprender este documento, debes conocer los siguientes temas:

Este documento está dirigido a las siguientes personas:

  • Ingenieros de aprendizaje automático (AA), administradores y operadores de plataformas, y especialistas en IA y datos interesados en usar las capacidades de organización de contenedores de Kubernetes para entregar cargas de trabajo de IA/AA.
  • Arquitectos de nube o especialistas en redes que interactúan con las redes de Kubernetes

Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido deGoogle Cloud , consulta Roles de usuario y tareas comunes de GKE Enterprise.

Cómo funcionan los alcances de GCPBackendPolicy

El campo scopes en GCPBackendPolicy te permite adaptar las configuraciones de backend según los clústeres específicos en los que se ejecutan tus backends. Puedes aplicar diferentes parámetros de configuración a los backends en diferentes entornos o regiones, lo que te brinda un control detallado sobre tus cargas de trabajo distribuidas de AA/ML. En las siguientes secciones, se explica cómo segmentar recursos, definir alcances de políticas y controlar la resolución de conflictos.

Recursos de Target Inference Gateway

Para usar políticas de Inference Gateway en un entorno de GKE de varios clústeres, el campo targetRef de GCPBackendPolicy debe hacer referencia a un recurso GCPInferencePoolImport:

targetRef:
  group: networking.gke.io
  kind: GCPInferencePoolImport
  name: example

Definición del alcance de la política

El campo scopes en GCPBackendPolicy te permite aplicar diferentes parámetros de configuración de backend a grupos específicos de backends. Si defines objetos de configuración dentro de default.scopes, puedes usar etiquetas de clúster para segmentar con precisión los backends y aplicar parámetros de configuración específicos. Por ejemplo, puedes establecer límites de capacidad o tasas de solicitudes únicos para los backends en diferentes regiones o clústeres.

No puedes especificar los mismos campos a nivel del backend (como maxRatePerEndpoint) en la sección principal default y dentro de las entradas default.scopes. Si intentas hacerlo, se rechazará la política, lo que ayuda a garantizar configuraciones claras y coherentes.

Resolución de conflictos

Cuando un backend coincide con varios alcances, el sistema aplica las siguientes reglas para garantizar un comportamiento predecible:

  • Prioridad de la coincidencia: Si un backend coincide con varios selectores de tu lista de scopes, el sistema solo aplica la configuración del primer selector coincidente. Ordena tus permisos desde el más específico hasta el más general para asegurarte de que la configuración deseada surta efecto.
  • Segmentación precisa: Cuando un solo selector contiene varias etiquetas (por ejemplo, gke.io/region: us-central1 y env: prod), el backend debe satisfacer todas esas etiquetas para que el sistema aplique la configuración del alcance. Este enfoque te permite segmentar con precisión los backends en función de varios criterios.

Campos compatibles por backend

En la siguiente tabla, se enumeran los campos a nivel del backend que puedes personalizar para controlar el comportamiento del backend en diferentes entornos o regiones.

Nombre del campo Descripción Ejemplo de configuración
backendPreference Especifica si el backend es preferido (PREFERRED) o predeterminado (DEFAULT) durante la búsqueda de capacidad para el balanceo de cargas multirregión. backendPreference: PREFERRED
balancingMode Especifica el algoritmo de balanceo. Los valores admitidos son RATE, UTILIZATION o CUSTOM_METRICS. balancingMode: CUSTOM_METRICS
capacityScalerPercent Configura la distribución del tráfico según la capacidad. Este valor es un porcentaje de 0 a 100 que actúa como multiplicador de la capacidad objetivo configurada del backend. El valor predeterminado es 100%. capacityScalerPercent: 20
customMetrics Especifica las métricas personalizadas que se usan para el balanceo de cargas cuando balancingMode se establece en CUSTOM_METRICS. Este campo es una lista de definiciones de métricas. customMetrics: [{ name: "my-metric", value: 0.8 }]
maxInFlightPerEndpoint Establece la cantidad máxima de solicitudes o conexiones simultáneas por extremo. maxInFlightPerEndpoint: 100
maxRatePerEndpoint Establece la tasa máxima de solicitudes por extremo, en solicitudes por segundo (RPS). maxRatePerEndpoint: 50

Cómo especificar selectores de alcance

El campo selectors en cada alcance te permite controlar qué backends reciben parámetros de configuración de políticas específicos. Puedes segmentar los backends según las etiquetas de clústeres (ya sean etiquetas integradas de GKE o tus propias etiquetas personalizadas) para adaptar la configuración a diferentes grupos de backends.

kind: GCPBackendPolicy
apiVersion: networking.gke.io/v1
metadata:
  name: echoserver-v2
spec:
  targetRef:
    group: "networking.gke.io"
    kind: GCPInferencePoolImport
    name: test-inference-pool
  default:
    balancingMode: IN_FLIGHT # IN_FLIGHT mode is set at the default level
    scopes:
    - selector:
        gke.io/zone: "us-central1-a"
      maxInFlightPerEndpoint: 100 # Invalid: maxInFlightPerEndpoint cannot be set within a scope when balancingMode is IN_FLIGHT at the default level

Etiquetas implícitas de GKE

Las siguientes etiquetas implícitas están disponibles para usarse como selectores. GKE aplica automáticamente estas etiquetas a tus clústeres:

Etiqueta Descripción Valor de ejemplo
gke.io/cluster-name El nombre del clúster de GKE. my-cluster
gke.io/region Es la región en la que se encuentra el clúster. us-central1
gke.io/zone Es la zona en la que se encuentra el clúster. us-central1-a

Etiquetas de clúster personalizadas

Las etiquetas de clúster personalizadas brindan más flexibilidad para agrupar y administrar tus backends. Si defines tus propias etiquetas en los clústeres de GKE, puedes crear selectores muy específicos en tu GCPBackendPolicy para aplicar configuraciones únicas. Por ejemplo, puedes basar estas configuraciones en criterios como diferentes entornos (dev, staging o prod) o versiones específicas de la aplicación.

Para agregar una etiqueta personalizada, como environment=production, a un clúster de GKE, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
    --region=REGION \
    --update-labels=LABEL_KEY=LABEL_VALUE

Reemplaza lo siguiente:

  • CLUSTER_NAME: El nombre de tu clúster.
  • REGION: Es la región del clúster.
  • LABEL_KEY: Es la clave de tu etiqueta personalizada, por ejemplo, environment.
  • LABEL_VALUE: Es el valor de tu etiqueta personalizada, por ejemplo, production.

Luego, puedes seleccionar backends en este clúster con el selector de etiquetas personalizado en tu política.

Ejemplo de GCPBackendPolicy con selectores de alcance

En el siguiente ejemplo, se define un GCPBackendPolicy que segmenta un GCPInferencePoolImport llamado experimental. La política usa etiquetas implícitas y personalizadas para establecer valores para backendPreference, maxRatePerEndpoint y capacityScalerPercent.

apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
  name: backend-policy
spec:
  targetRef:
    kind: GCPInferencePoolImport
    name: experimental
  default:
    scopes:
      # Selector 1: Targets backends in us-west2, sets capacity to 50%
      - capacityScalarPercent: 50
        selector:
          gke.io/region: us-west2

      # Selector 2: Targets backends in clusters labeled 'env: prod'
      - maxRatePerEndpoint: 40
        selector:
          env: prod

      # Selector 3: Targets backends in a specific US-Central zone and marks them as PREFERRED
      - backendPreference: PREFERRED
        maxRatePerEndpoint: 50
        selector:
          gke.io/cluster-name: my-cluster
          gke.io/zone: us-central1-a

Después de aplicar esta política, observarás los siguientes comportamientos:

  • La capacidad efectiva de los backends en los clústeres de la región us-west2 se reduce al 50%.
  • Los backends en clústeres etiquetados con env: prod están limitados a un máximo de 40 solicitudes por segundo por extremo.
  • Los backends en clústeres ubicados específicamente en la zona us-central1-a tienen prioridad (PREFERRED) durante el balanceo de cargas y tienen una tasa máxima de 50 solicitudes por segundo por extremo.

¿Qué sigue?