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:
- Organización de IA/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 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-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 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-west2se reduce 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 en 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 varios clústeres de GKE.
- Obtén más información para configurar la puerta de enlace de inferencia de varios clústeres de GKE.