Bilanciamento del carico nativo del container


Questa pagina spiega che cos'è il bilanciamento del carico nativo dei container in Google Kubernetes Engine (GKE). Il bilanciamento del carico nativo del container consente a diversi tipi di bilanciatori del carico di scegliere come target direttamente i pod e di distribuire uniformemente il traffico tra i pod.

Architettura di bilanciamento del carico nativo del container

Il bilanciamento del carico nativo del container utilizza GCE_VM_IP_PORT gruppi di endpoint di rete (NEG). Gli endpoint del NEG sono indirizzi IP del pod.

Il bilanciamento del carico nativo del container viene sempre utilizzato per GKE Ingress interno ed è facoltativo per Ingress esterno. Il controller Ingress crea il bilanciatore del carico, inclusi l'indirizzo IP virtuale, le regole di inoltro, i controlli di integrità e le regole firewall.

Per scoprire come utilizzare il bilanciamento del carico nativo del container con Ingress, consulta Bilanciamento del carico nativo del container tramite Ingress.

Per una maggiore flessibilità, puoi anche creare NEG autonomi. In questo caso, sei responsabile della creazione e della gestione di tutti gli aspetti del bilanciatore del carico.

Vantaggi del bilanciamento del carico nativo del container

Il bilanciamento del carico nativo del container offre i seguenti vantaggi:

I pod sono oggetti di base per il bilanciamento del carico
kube-proxy configura le regole iptables dei nodi per distribuire il traffico ai pod. Senza il bilanciamento del carico nativo del container, il traffico del bilanciatore del carico si sposta nei gruppi di istanze del nodo e viene instradato utilizzando le regole iptables ai pod che potrebbero o meno trovarsi nello stesso nodo. Con il bilanciamento del carico nativo del container, il traffico del bilanciatore del carico viene distribuito direttamente ai pod che devono riceverlo, eliminando l'hop di rete aggiuntivo. Il bilanciamento del carico nativo del container contribuisce anche a migliorare i controlli di integrità poiché ha come target direttamente i pod.

Confronto del comportamento predefinito (a sinistra) con il comportamento del bilanciatore del carico nativo del container.
Migliori prestazioni di rete
Poiché il bilanciatore del carico nativo del container comunica direttamente con i pod e le connessioni hanno meno hop di rete, sia la latenza sia la velocità effettiva sono migliorate.
Migliore visibilità
Con il bilanciamento del carico nativo del container, hai visibilità sulla latenza dal bilanciatore del carico delle applicazioni ai pod. È visibile la latenza dall'Application Load Balancer a ciascun pod, aggregata con il bilanciamento del carico nativo del container basato sull'IP del nodo. In questo modo, la risoluzione dei problemi relativi ai servizi a livello di NEG è più semplice.
Supporto di funzionalità di bilanciamento del carico avanzate
Il
bilanciamento del carico nativo dei container in GKE supporta diverse funzionalità dei bilanciatori del carico delle applicazioni esterni, come l'integrazione con Google Cloud servizi come Google Cloud Armor, Cloud CDN e Identity-Aware Proxy. Dispone inoltre di algoritmi di bilanciamento del carico per una distribuzione accurata del traffico.
Supporto di Cloud Service Mesh
Il modello di dati NEG è necessario per utilizzare Cloud Service Mesh, il piano di controllo del traffico completamente gestito diGoogle Cloudper i mesh di servizi.

Disponibilità dei pod

Per i pod pertinenti, il controller Ingress corrispondente gestisce un gate di idoneità di tipo cloud.google.com/load-balancer-neg-ready. Il controller Ingress esegue il polling del stato del controllo di integrità del bilanciatore del carico, che include lo stato di tutti gli endpoint nel NEG. Quando lo stato del controllo di salute del bilanciatore del carico indica che l'endpoint corrispondente a un determinato pod è in stato di salute, il controller Ingress imposta il valore della soglia di idoneità del pod su True. Il kubelet in esecuzione su ogni nodo calcola quindi l'idoneità effettiva del pod, tenendo conto sia del valore di questo cancello di idoneità sia, se definito, del sondaggio di idoneità del pod.

I cancelli di idoneità dei pod vengono attivati automaticamente quando si utilizza il bilanciamento del carico nativo del container tramite Ingress.

I controlli di idoneità controllano la frequenza di un aggiornamento in sequenza. Quando avvii un aggiornamento graduale, man mano che GKE crea nuovi pod, un endpoint per ogni nuovo pod viene aggiunto a un NEG. Quando l'endpoint è in stato di salute dal punto di vista del bilanciatore del carico, il controller Ingress imposta il cancello di idoneità su True. Un pod appena creato deve superare almeno il limite di idoneità prima che GKE rimuova un pod precedente. In questo modo, l'endpoint corrispondente per il pod ha già superato il controllo di integrità del bilanciatore del carico e la capacità del backend viene mantenuta.

Se il cancello di idoneità di un pod non indica mai che il pod è pronto, a causa di un'immagine del contenitore non valida o di un controllo di integrità del bilanciatore del carico configurato in modo errato, il bilanciatore del carico non indirizzerà il traffico al nuovo pod. Se si verifica un errore di questo tipo durante l'implementazione di un deployment aggiornato, l'implementazione si blocca dopo aver tentato di creare un nuovo pod perché il relativo criterio di idoneità non è mai True. Consulta la sezione relativa alla risoluzione dei problemi per informazioni su come rilevare e risolvere questa situazione.

Senza i controlli di idoneità e il bilanciamento del carico nativo dei container, GKE non può rilevare se gli endpoint di un bilanciatore del carico sono operativi prima di contrassegnare i pod come idonei. Nelle versioni precedenti di Kubernetes, puoi controllare la frequenza con cui i pod vengono rimossi e sostituiti specificando un periodo di ritardo (minReadySeconds nella specifica del deployment).

GKE imposta il valore di cloud.google.com/load-balancer-neg-ready per un pod su True se è soddisfatta una delle seguenti condizioni:

  • Nessuno degli indirizzi IP del pod è un endpoint in un GCE_VM_IP_PORT NEG gestito dal piano di controllo GKE.
  • Uno o più indirizzi IP del pod sono endpoint in un GCE_VM_IP_PORT NEG gestito dal piano di controllo GKE. Il NEG è collegato a un servizio di backend. Il servizio di backend ha superato un controllo di integrità del bilanciatore del carico.
  • Uno o più indirizzi IP del pod sono endpoint in un GCE_VM_IP_PORT NEG gestito dal piano di controllo GKE. Il NEG è collegato a un servizio di backend. Il controllo di integrità del bilanciatore del carico per il servizio di backend scade.
  • Uno o più indirizzi IP del pod sono endpoint in uno o più GCE_VM_IP_PORT NEG. Nessun NEG è collegato a un servizio di backend. Non sono disponibili dati controllo di integrità del bilanciatore del carico.

Affinità sessione

Il bilanciamento del carico nativo del container supporta l'affinità della sessione basata su pod.

Requisiti per l'utilizzo del bilanciamento del carico nativo del container

I bilanciatori del carico nativi dei container tramite Ingress su GKE hanno i seguenti requisiti:

  • Il cluster deve essere nativo della VPC.
  • Il cluster deve avere il componente aggiuntivo HttpLoadBalancing abilitato. Nei cluster GKE, il componente aggiuntivo HttpLoadBalancing è abilitato per impostazione predefinita. Non devi disattivarlo.

Limitazioni per i bilanciatori del carico nativi dei container

I bilanciatori del carico nativi dei container tramite Ingress su GKE presentano le seguenti limitazioni:

  • Non supportano i bilanciatori del carico di rete passthrough esterni.
  • Non devi modificare o aggiornare manualmente la configurazione del bilanciatore del carico delle applicazioni creato da GKE. Eventuali modifiche apportate vengono sovrascritte da GKE.

Prezzi dei bilanciatori del carico nativi del container

Ti viene addebitato il bilanciatore del carico delle applicazioni eseguito il provisioning dall'Ingress che crei in questa guida. Per informazioni sui prezzi dei bilanciatori del carico, consulta Bilanciamento del carico e regole di inoltro nella pagina dei prezzi di VPC.

Passaggi successivi