En un entorno de Inference Gateway de Google Kubernetes Engine (GKE) de varios clústeres, puedes aplicar diferentes parámetros de configuración 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 tener conocimientos sobre lo siguiente:
- Organización de IA y AA en GKE.
- Terminología de la IA generativa.
- Conceptos de redes de GKE, incluidos los servicios, el Ingress de varios clústeres de GKE y la API de GKE Gateway
- Balanceo de cargas enGoogle Cloud, en especial cómo interactúan los balanceadores de cargas con GKE
Este documento está dirigido a los siguientes arquetipos de usuarios:
- Ingenieros de aprendizaje automático (AA), administradores y operadores de plataformas, y especialistas en datos y en IA interesados en usar las funciones 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 de Google 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 IA/AA. En las siguientes secciones, se explica cómo segmentar recursos, definir alcances de políticas y controlar la resolución de conflictos.
Recursos de destino de 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 parámetros de configuración claros 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 en 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 del más específico al más general para garantizar que se aplique la configuración prevista. - Segmentación precisa: Cuando un solo selector contiene varias etiquetas (por ejemplo,
gke.io/region: us-central1yenv: 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 según varios criterios.
Campos admitidos por backend
En la siguiente tabla, se enumeran los campos a nivel de 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 un 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 |
Especifica selectores de permisos
El campo selectors en cada alcance te permite controlar qué back-ends reciben parámetros de configuración de políticas específicos. Puedes segmentar los backends según las etiquetas de clúster (ya sean etiquetas integradas de GKE o tus propias etiquetas personalizadas) para adaptar las configuraciones 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 se orienta a 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:
- Los backends de los clústeres dentro de la región
us-west2tienen su capacidad efectiva reducida al 50%. - Los backends en clústeres etiquetados con
env: prodestán limitados a un máximo de 40 solicitudes por segundo por extremo. - Los backends de los clústeres ubicados específicamente en la zona
us-central1-atienen prioridad (PREFERRED) durante el balanceo de cargas y tienen una tasa máxima de 50 solicitudes por segundo por extremo.
¿Qué sigue?
- Obtén más información para configurar un
GCPBackendPolicy. - Obtén más información sobre la puerta de enlace de inferencia de GKE de varios clústeres.
- Obtén más información para configurar la GKE Inference Gateway multiclúster.