Personalizzare le configurazioni di backend con gli ambiti GCPBackendPolicy

In un ambiente multi-cluster Google Kubernetes Engine (GKE) Inference Gateway, puoi applicare configurazioni di backend diverse ai servizi di cui è stato eseguito il deployment in più cluster. Ad esempio, puoi impostare tassi di richieste massimi o scalatori di capacità diversi per i backend in regioni o ambienti diversi.

Per comprendere questo documento, devi conoscere i seguenti argomenti:

Questo documento è rivolto ai seguenti utenti:

  • Ingegneri di machine learning (ML), amministratori e operatori di piattaforme e specialisti di dati e AI interessati a utilizzare le funzionalità di orchestrazione dei container Kubernetes per la gestione dei carichi di lavoro di AI/ML.
  • Architetti cloud o specialisti di networking che interagiscono con il networking Kubernetes.

Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti diGoogle Cloud , consulta Ruoli utente e attività comuni di GKE Enterprise.

Come funzionano gli ambiti di GCPBackendPolicy

Il campo scopes in GCPBackendPolicy ti consente di personalizzare le configurazioni di backend in base ai cluster specifici in cui vengono eseguiti i backend. Puoi applicare impostazioni diverse ai backend in ambienti o regioni diversi, il che ti offre un controllo granulare sui carichi di lavoro AI/ML distribuiti. Le sezioni seguenti spiegano come scegliere come target le risorse, definire gli ambiti dei criteri e gestire la risoluzione dei conflitti.

Risorse di Inference Gateway di destinazione

Per utilizzare i criteri di Inference Gateway in un ambiente GKE multi-cluster, il campo targetRef di GCPBackendPolicy deve fare riferimento a una risorsa GCPInferencePoolImport:

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

Definizione dell'ambito delle policy

Il campo scopes in GCPBackendPolicy ti consente di applicare impostazioni di backend diverse a gruppi specifici di backend. Definendo gli oggetti di configurazione all'interno di default.scopes, puoi utilizzare le etichette dei cluster per scegliere con precisione come target i backend e applicare impostazioni specifiche. Ad esempio, puoi impostare limiti di capacità o tassi di richieste unici per i backend in regioni o cluster diversi.

Non puoi specificare gli stessi campi a livello di backend (ad esempio maxRatePerEndpoint) sia nella sezione default principale sia all'interno delle voci default.scopes. Se tenti di farlo, la policy viene rifiutata, il che contribuisce a garantire configurazioni chiare e coerenti.

Risoluzione dei conflitti

Quando un backend corrisponde a più ambiti, il sistema applica le seguenti regole per garantire un comportamento prevedibile:

  • Corrispondenza con priorità:se un backend corrisponde a più selettori nell'elenco scopes, il sistema applica solo le impostazioni del primo selettore corrispondente. Ordina gli ambiti dal più specifico al più generale per assicurarti che la configurazione prevista venga applicata.
  • Targeting preciso:quando un singolo selettore contiene più etichette (ad esempio gke.io/region: us-central1 e env: prod), il backend deve soddisfare tutte queste etichette affinché il sistema applichi la configurazione dell'ambito. Questo approccio ti consente di scegliere come target i backend in modo preciso in base a più criteri.

Campi per backend supportati

La tabella seguente elenca i campi a livello di backend che puoi personalizzare per controllare il comportamento del backend in diversi ambienti o regioni.

Nome campo Descrizione Configurazione di esempio
backendPreference Specifica se il backend è preferito (PREFERRED) o predefinito (DEFAULT) durante la ricerca della capacità per il bilanciamento del carico multiregionale. backendPreference: PREFERRED
balancingMode Specifica l'algoritmo di bilanciamento. I valori supportati sono RATE, UTILIZATION o CUSTOM_METRICS. balancingMode: CUSTOM_METRICS
capacityScalerPercent Configura la distribuzione del traffico in base alla capacità. Questo valore è una percentuale compresa tra 0 e 100, che funge da moltiplicatore della capacità target configurata del backend. Il valore predefinito è 100%. capacityScalerPercent: 20
customMetrics Specifica le metriche personalizzate utilizzate per il bilanciamento del carico quando balancingMode è impostato su CUSTOM_METRICS. Questo campo è un elenco di definizioni di metriche. customMetrics: [{ name: "my-metric", value: 0.8 }]
maxInFlightPerEndpoint Imposta il numero massimo di richieste o connessioni simultanee per endpoint. maxInFlightPerEndpoint: 100
maxRatePerEndpoint Imposta la frequenza massima di richieste per endpoint, in richieste al secondo (RPS). maxRatePerEndpoint: 50

Specifica i selettori di ambito

Il campo selectors in ogni ambito ti consente di controllare quali backend ricevono impostazioni specifiche dei criteri. Puoi scegliere come target i backend in base alle etichette del cluster, ovvero etichette GKE integrate o etichette personalizzate, per personalizzare le configurazioni per diversi gruppi di backend.

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

Etichette GKE implicite

Sono disponibili le seguenti etichette implicite da utilizzare come selettori. GKE applica automaticamente queste etichette ai tuoi cluster:

Etichetta Descrizione Valore di esempio
gke.io/cluster-name Il nome del cluster GKE. my-cluster
gke.io/region La regione in cui si trova il cluster. us-central1
gke.io/zone La zona in cui si trova il cluster. us-central1-a

Etichette dei cluster personalizzate

Le etichette dei cluster personalizzate offrono maggiore flessibilità per il raggruppamento e la gestione dei backend. Definendo le tue etichette sui cluster GKE, puoi creare selettori molto specifici nel tuo GCPBackendPolicy per applicare configurazioni uniche. Ad esempio, puoi basare queste configurazioni su criteri come diversi ambienti (dev, staging o prod) o versioni specifiche dell'applicazione.

Per aggiungere un'etichetta personalizzata, ad esempio environment=production, a un cluster GKE, esegui questo comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del tuo cluster.
  • REGION: la regione del cluster.
  • LABEL_KEY: la chiave dell'etichetta personalizzata, ad esempio environment.
  • LABEL_VALUE: il valore dell'etichetta personalizzata, ad esempio production.

Puoi quindi selezionare i backend in questo cluster utilizzando il selettore di etichette personalizzate nel criterio.

Esempio di GCPBackendPolicy con selettori di ambito

L'esempio seguente definisce un GCPBackendPolicy che ha come target un GCPInferencePoolImport denominato experimental. Il criterio utilizza etichette implicite e personalizzate per impostare i valori di backendPreference, maxRatePerEndpoint e 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

Dopo aver applicato questa policy, si osservano i seguenti comportamenti:

  • I backend nei cluster all'interno della regione us-west2 hanno una capacità effettiva scalata al 50%.
  • I backend nei cluster etichettati con env: prod sono limitati a un massimo di 40 richieste al secondo per endpoint.
  • I backend nei cluster che si trovano specificamente nella zona us-central1-a vengono assegnati con priorità (PREFERRED) durante il bilanciamento del carico e hanno una frequenza massima di 50 richieste al secondo per endpoint.

Passaggi successivi