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:
- Orchestrazione di AI/ML su GKE.
- Terminologia dell'AI generativa.
- Concetti di networking GKE, tra cui Servizi, GKE Multi Cluster Ingress e l' API GKE Gateway.
- Bilanciamento del carico in Google Cloud, in particolare come i bilanciatori del carico interagiscono con GKE.
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-central1eenv: 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 esempioenvironment.LABEL_VALUE: il valore dell'etichetta personalizzata, ad esempioproduction.
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-west2hanno una capacità effettiva scalata al 50%. - I backend nei cluster etichettati con
env: prodsono limitati a un massimo di 40 richieste al secondo per endpoint. - I backend nei cluster che si trovano specificamente nella zona
us-central1-avengono assegnati con priorità (PREFERRED) durante il bilanciamento del carico e hanno una frequenza massima di 50 richieste al secondo per endpoint.
Passaggi successivi
- Scopri come configurare un
GCPBackendPolicy. - Scopri di più sul gateway di inferenza multicluster GKE.
- Scopri di più su come configurare il gateway di inferenza multi-cluster GKE.