Questa pagina introduce il bilanciamento del carico basato sull'utilizzo per i servizi Google Kubernetes Engine (GKE), che valuta l'utilizzo delle risorse dei pod di backend e utilizza la capacità effettiva del workload per ribilanciare in modo intelligente il traffico per una maggiore disponibilità delle applicazioni e un routing flessibile.
Questa pagina è destinata agli architetti cloud e agli specialisti di networking che gestiscono i servizi su GKE e vogliono ottimizzare la distribuzione del traffico in base all'utilizzo delle risorse in tempo reale.
Prima di leggere questa pagina, assicurati di avere familiarità con quanto segue:
- Concetti di GKE: inclusi cluster, nodi e pod GKE.
- Servizi Kubernetes: come vengono esposte le applicazioni in Kubernetes.
- Cloud Load Balancing: una comprensione generale di Cloud Load Balancing, in particolare di come funzionano i bilanciatori del caricoCloud de Confiance .
- API Gateway di Kubernetes: il metodo consigliato per esporre i servizi e gestire il traffico in GKE.
- Gruppi di endpoint di rete (NEG): in che modo i servizi GKE utilizzano i NEG per integrarsi con Cloud Load Balancing.
- Metriche di utilizzo delle risorse di base: ad esempio, l'utilizzo della CPU, che è la metrica attuale utilizzata per il bilanciamento del carico basato sull'utilizzo.
Panoramica
L'infrastruttura Cloud Load Balancing indirizza il traffico ai servizi GKE in base a metriche di raggiungibilità standard, tra cui HTTP, HTTPS, HTTP/2 e gRPC, che determinano l'integrità e l'idoneità dei pod. Per impostazione predefinita, inoltra il traffico a tutti i pod di backend integri tenendo conto della disponibilità dei pod e, facoltativamente, delle policy di distribuzione del traffico definite, ad esempio GCPTrafficDistributionPolicy
.
Le applicazioni moderne monitorano l'utilizzo della CPU per consentirti di comprendere i costi, monitorare le prestazioni e gestire in modo efficace la capacità. Per soddisfare questa esigenza, i bilanciatori del carico utilizzano i dati di utilizzo delle risorse in tempo reale come metrica, il che consente loro di determinare il volume di traffico ottimale che ogni pod di backend può elaborare per la distribuzione intelligente del traffico.
Il bilanciamento del carico basato sull'utilizzo per i servizi GKE valuta l'utilizzo delle risorse come metrica per determinare la capacità dei pod di backend di elaborare il traffico delle applicazioni. Quindi, ribilancia il traffico verso altri backend se uno o più pod sono sovrautilizzati.
Funzionalità e vantaggi
Il bilanciamento del carico basato sull'utilizzo offre i seguenti vantaggi:
Aumenta la disponibilità delle applicazioni: assegna la priorità al traffico verso i pod con un utilizzo delle risorse inferiore quando i backend sono sotto pressione, il che contribuisce a mantenere le prestazioni delle applicazioni, previene rallentamenti e interruzioni e garantisce un'esperienza affidabile per gli utenti.
Offre un routing flessibile: fornisce un insieme aggiuntivo di metriche che ti consentono di definire criteri di distribuzione del traffico che si allineano con precisione ai tuoi casi d'uso aziendali.
Come funziona il bilanciamento del carico basato sull'utilizzo
Il bilanciamento del carico basato sull'utilizzo per i servizi GKE migliora la gestione del traffico per le applicazioni in esecuzione in GKE rendendo il processo più reattivo al carico delle risorse. La tua applicazione viene eseguita in GKE utilizzando molte istanze (pod) su macchine diverse. Riceve traffico in due modi principali:
Dall'esterno del cluster (traffico nord-sud): il cluster riceve traffico da internet o da altre fonti esterne, noto come traffico nord-sud. Un bilanciatore del carico (gateway) gestito da GKE indirizza questo traffico dall'esterno del cluster.
Dall'interno del cluster (traffico est-ovest): il cluster riceve flussi di traffico tra diverse parti dell'applicazione, da altri servizi all'interno del cluster GKE o tra più cluster. Questo flusso di traffico interno è noto come traffico est-ovest.
Il bilanciamento del carico basato sull'utilizzo per i servizi GKE prevede un processo continuo, in cui gli agenti GKE raccolgono metriche sull'utilizzo dei pod che consentono all'infrastruttura di Cloud Load Balancing di distribuire il traffico in modo intelligente. I seguenti passaggi riepilogano il modo in cui il bilanciamento del carico basato sull'utilizzo per i servizi GKE gestisce il traffico delle applicazioni in base all'utilizzo delle risorse in tempo reale:
Quando configuri il servizio GKE con un bilanciatore del carico delle applicazioni (gateway), GKE crea automaticamente i NEG per ogni zona e assegna i pod dell'applicazione a questi NEG. Inizialmente, la distribuzione del traffico si basa su controlli di integrità di base e sulle impostazioni predefinite.
Configuri il servizio GKE in modo che utilizzi l'utilizzo delle risorse, come la CPU, come metrica chiave per il bilanciamento del carico.
Oltre alla metrica di utilizzo della CPU predefinita, puoi esporre metriche personalizzate dalla tua applicazione da utilizzare per il bilanciatore del carico. L'utilizzo delle metriche della tua applicazione ti consente di definire indicatori personalizzati specifici per il tuo carico di lavoro. Ad esempio, puoi utilizzare
gpu_cache_usage_perc metric
da un carico di lavoro vLLM per aiutare il bilanciatore del carico a indirizzare il traffico alla regione con più risorse disponibili. Per scoprire come esporre metriche personalizzate per il bilanciatore del carico, consulta Esporre metriche personalizzate per i bilanciatori del carico.Un agente GKE speciale monitora continuamente l'utilizzo delle risorse dei pod (ad esempio, la CPU) e invia regolarmente questi dati all'infrastruttura di Cloud Load Balancing. Se un pod ha più container, l'agente calcola il loro utilizzo combinato.
L'infrastruttura Cloud Load Balancing analizza i dati di utilizzo in tempo reale per regolare dinamicamente la distribuzione del traffico. Determina la quantità di traffico da inviare a ciascun gruppo di pod (ogni NEG zonale) valutando l'utilizzo medio delle risorse (ad esempio il carico della CPU) e altri fattori come la latenza di rete. Questo processo sposta automaticamente il traffico dai pod con carico maggiore a quelli con carico inferiore, garantendo un utilizzo efficiente delle risorse nella regione più vicina.
Il seguente esempio mostra come funziona il bilanciamento del carico basato sull'utilizzo.
Esempio: gestione dei pod sovrautilizzati
Quando il servizio esegue più container all'interno dello stesso pod, l'agente delle metriche GKE segnala separatamente l'utilizzo delle risorse di ogni container. L'infrastruttura di bilanciamento del carico cloud calcola quindi una media ponderata del loro utilizzo per ottenere la capacità totale del pod.

La figura 1 mostra come Cloud Load Balancing utilizza le metriche di utilizzo della CPU in tempo reale di GKE per ottimizzare la distribuzione del traffico tra i pod di cui è stato eseguito il deployment in più zone. La richiesta del client viene instradata tramite il gateway GKE ai pod di backend raggruppati in NEG in tre zone.
Nella zona 1, il pod segnala un utilizzo della CPU del 90%. Il bilanciatore del carico riduce il traffico a questo pod per evitare il sovraccarico.
Nella zona 2, il pod viene utilizzato moderatamente al 60% della CPU e continua a ricevere traffico.
Nella zona 3, il pod segnala un basso utilizzo della CPU al 40% e potrebbe ricevere più traffico. GKE invia continuamente metadati e metriche di utilizzo all'infrastruttura Cloud Load Balancing, che regola in modo intelligente il routing del traffico per mantenere le prestazioni e la disponibilità dell'applicazione.
Considera uno scenario in cui il tuo servizio è configurato per un utilizzo massimo della CPU dell'80%. Se i pod nella zona 1 segnalano un utilizzo della CPU del 90%, che supera la soglia, si verifica quanto segue:
- L'infrastruttura Cloud Load Balancing rileva questo utilizzo eccessivo.
- Quindi, ribilancia in modo intelligente il traffico e riduce la quantità di traffico che invia ai pod nella zona 1. Questo ribilanciamento continua finché l'utilizzo medio della CPU per i pod in quella zona non scende al di sotto della soglia di utilizzo dell'80%.
- Quando i pod nella zona 1 segnalano un utilizzo della CPU inferiore (sotto la soglia dell'80%), l'infrastruttura diCloud Load Balancingd rivaluta la distribuzione del traffico. Poi ribilancia gradualmente il traffico tra tutti i pod che supportano il servizio e continua a distribuire il traffico in modo efficiente in base all'utilizzo.