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 massimi di richieste 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 tipo:

  • Ingegneri del machine learning (ML), amministratori e operatori della piattaforma e specialisti di dati e AI interessati a utilizzare le funzionalità di orchestrazione dei container Kubernetes per gestire 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 del 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 del gateway di inferenza di destinazione

Per utilizzare le policy 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 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 (come maxRatePerEndpoint) sia nella sezione default principale sia nelle voci default.scopes. Se provi a 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 con precisione i backend 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 in parallelo 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 dei 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

Le seguenti etichette implicite sono disponibili per l'utilizzo 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 cluster personalizzate

Le etichette dei cluster personalizzate offrono maggiore flessibilità per raggruppare e gestire i backend. Definendo le tue etichette sui cluster GKE, puoi creare selettori molto specifici in 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 tuo 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. La policy 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 la 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