Questa pagina presenta 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, al fine di aumentare la disponibilità delle applicazioni e il routing flessibile.
Questa pagina è rivolta ad architetti cloud e 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 GKE, nodi e pod.
- Servizi Kubernetes: il modo in cui le applicazioni vengono esposte all'interno di Kubernetes.
- Cloud Load Balancing: una conoscenza generale di Cloud Load Balancing, in particolare del funzionamento dei bilanciatori del caricoGoogle Cloud .
- API Gateway di Kubernetes: il metodo consigliato per esporre i servizi e gestire il traffico in GKE.
- Gruppi di endpoint di rete (NEG): come i servizi GKE utilizzano i NEG per l'integrazione con Cloud Load Balancing.
- Metriche di base sull'utilizzo delle risorse: ad esempio, l'utilizzo della CPU, che è la metrica attuale utilizzata per il bilanciamento del carico basato sull'utilizzo.
Panoramica
L'infrastruttura di Cloud Load Balancing instrada 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 delle policy di distribuzione del traffico definite facoltativamente, ad esempio GCPTrafficDistributionPolicy.
Le applicazioni moderne monitorano l'utilizzo della CPU in modo da poter 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 una 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, riequilibra il traffico verso altri backend se uno o più pod sono sovraccarichi.
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 aiuta a mantenere le prestazioni delle applicazioni, evita rallentamenti e interruzioni e contribuisce a garantire un'esperienza affidabile per gli utenti.
Offre un routing flessibile: fornisce un insieme aggiuntivo di metriche che ti consentono di definire policy di distribuzione del traffico che si allineano esattamente 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 eseguite 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 origini 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 le metriche di utilizzo dei pod che consentono all'infrastruttura di Cloud Load Balancing di distribuire il traffico in modo intelligente. I seguenti passaggi riassumono 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 della tua 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 affinché vengano utilizzate dal bilanciatore del carico. L'utilizzo delle metriche della tua applicazione ti consente di definire i tuoi indicatori specifici per il tuo workload. Ad esempio, puoi utilizzare la
gpu_cache_usage_perc metricdi un workload vLLM per aiutare il bilanciatore del carico a indirizzare il traffico verso la regione con più risorse disponibili. Per scoprire come esporre metriche personalizzate per il bilanciatore del carico, consulta Esponi 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 l'utilizzo combinato.
L'infrastruttura di 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 a livello di zona) 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 un carico maggiore a quelli con un carico minore, garantendo un utilizzo efficiente delle risorse nella regione più vicina.
L'esempio seguente 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 l'utilizzo delle risorse di ogni container separatamente. L'infrastruttura di Cloud Load Balancing 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 verso questo pod per evitare il sovraccarico.
Nella zona 2, il pod è utilizzato moderatamente con il 60% di CPU e continua a ricevere traffico.
Nella zona 3, il pod segnala un utilizzo della CPU basso, pari al 40%, e potrebbe ricevere più traffico. GKE invia continuamente metadati e metriche di utilizzo all'infrastruttura di Cloud Load Balancing, che regola in modo intelligente il routing del traffico per mantenere le prestazioni e la disponibilità delle applicazioni.
Considera uno scenario in cui il 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 di Cloud Load Balancing rileva questo utilizzo eccessivo.
- Quindi, riequilibra 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%.
- Poiché i pod nella Zona 1 registrano un utilizzo della CPU inferiore (al di sotto della soglia dell'80%), l'infrastruttura di Cloud Load Balancing rivaluta la distribuzione del traffico. Quindi, riequilibra gradualmente il traffico tra tutti i pod che supportano il servizio e continua a distribuire il traffico in modo efficiente in base all'utilizzo.