Configurazione del bilanciamento del carico TCP/UDP


Panoramica

Puoi creare un bilanciatore del carico TCP/UDP creando un servizio con type: LoadBalancer nella specifica. Questa pagina illustra i parametri che puoi utilizzare per configurare i servizi LoadBalancer. Per ulteriori informazioni specifiche per i bilanciatori del carico interni, consulta Utilizzo di un bilanciatore del carico di rete passthrough interno. Per ulteriori informazioni specifiche per i bilanciatori del carico esterni, consulta Esposizione di applicazioni mediante servizi.

Parametri del servizio

I seguenti parametri sono supportati per i servizi LoadBalancer di Google Kubernetes Engine (GKE).

Selezione delle Riepilogo Campo del servizio Supporto delle versioni di GKE
Norme sul traffico interno Abilita le limitazioni del traffico interno per instradare il traffico interno solo verso gli endpoint all'interno del nodo da cui ha avuto origine il traffico. Questo parametro non è supportato con i cluster che eseguono GKE Dataplane V2. spec:internalTrafficPolicy GKE 1.22 e versioni successive
Norme sul traffico esterno Consente di configurare se il bilanciamento del carico del traffico esterno viene eseguito o meno tra i nodi GKE. spec:externalTrafficPolicy GKE 1.14 e versioni successive (1.23.4-gke.400 e versioni successive per pool di nodi Windows)
Intervalli di origine del bilanciatore del carico Configura regole firewall facoltative in GKE e nel VPC per consentire solo determinati intervalli di origine. spec:loadBalancerSourceRanges Tutte le versioni supportate
IP bilanciatore del carico Specifica un IP per i bilanciatori del carico spec:loadBalancerIP Tutte le versioni supportate
Tutte le porte La capacità del bilanciatore del carico TCP/UDP di inoltrare tutte le porte anziché porte specifiche N/A Per bilanciatori del carico di rete passthrough interni, supportati con impostazione secondaria. Per bilanciatori del carico esterni, opzione supportata per tutte le versioni.
Network Service Tiers Indica il livello di rete che deve essere utilizzato da un bilanciatore del carico Google Cloud. I valori validi sono Standard e Premium (valore predefinito). metadata:annotations:cloud.google.com/network-tier GKE 1.19 e versioni successive

Criterio di traffico esterno

externalTrafficPolicy è un'opzione di servizio standard che definisce se e come il traffico in entrata a un nodo GKE viene bilanciato del carico. Cluster è il criterio predefinito, ma Local viene spesso utilizzato per conservare l'IP di origine del traffico in entrata in un nodo cluster. Local disabilita in modo efficace il bilanciamento del carico sul nodo del cluster in modo che il traffico ricevuto da un pod locale visualizzi l'indirizzo IP di origine originale.

externalTrafficPolicy è supportato per i servizi LoadBalancer interni (tramite il bilanciatore del carico TCP/UDP), ma il comportamento del bilanciamento del carico dipende dalla provenienza del traffico e dal criterio di traffico configurato.

Il traffico proveniente dall'esterno del cluster verso un bilanciatore del carico TCP/UDP avrà il seguente comportamento se nel cluster è presente almeno un pod integro del servizio:

  • Criterio Cluster: il traffico verrà bilanciato con qualsiasi nodo GKE integro nel cluster, quindi kube-proxy lo invierà a un nodo con il pod.
  • Criterio Local: i nodi che non hanno uno dei pod di backend vengono visualizzati come non integri per il bilanciatore del carico TCP/UDP. Il traffico verrà inviato solo a uno dei nodi cluster integri rimanenti che contengono il pod. Il traffico non viene instradato di nuovo da kube-proxy, ma viene inviato direttamente al pod locale con le informazioni dell'intestazione IP intatte.

Se il traffico verso un determinato IP di servizio LoadBalancer proviene da un nodo GKE all'interno del cluster, il comportamento del traffico è diverso. La seguente tabella riassume il comportamento del traffico proveniente da un nodo o pod all'interno del cluster destinato a un pod membro di un servizio LoadBalancer:

externalTrafficPolicy Pod del membro di servizio in esecuzione sullo stesso nodo da cui ha origine il traffico? Comportamento del traffico
Cluster I pacchetti vengono consegnati a qualsiasi pod membro, sul nodo o su un nodo diverso.
Cluster No I pacchetti vengono consegnati a qualsiasi pod membro, che deve trovarsi su un nodo diverso.
Locale I pacchetti vengono consegnati a qualsiasi pod membro sullo stesso nodo.
Locale No

Kubernetes 1.14 e versioni precedenti: i pacchetti vengono eliminati.

Kubernetes 1.15 e versioni successive: i pacchetti vengono consegnati a qualsiasi pod membro, che deve trovarsi su un nodo diverso.

Intervalli di origine del bilanciatore del carico

L'array spec: loadBalancerSourceRanges specifica uno o più intervalli di indirizzi IP interni o esterni. loadBalancerSourceRanges limita il traffico attraverso il bilanciatore del carico agli IP specificati in questo campo. Con questa configurazione, kube-proxy crea le regole iptables corrispondenti nei nodi Kubernetes. Inoltre, GKE crea automaticamente una regola firewall nella tua rete VPC. Se ometti questo campo, il servizio accetta il traffico da qualsiasi indirizzo IP (0.0.0.0/0).

Per ulteriori informazioni sulla specifica del servizio, consulta il riferimento sull'API di servizio.

IP bilanciatore del carico

spec: loadBalancerIP consente di scegliere un indirizzo IP specifico per il bilanciatore del carico. L'indirizzo IP non deve essere utilizzato da un altro servizio o bilanciatore del carico di rete passthrough interno. Se omesso, viene assegnato un IP temporaneo. Per saperne di più, consulta Prenotare un indirizzo IP interno statico.

Se l'indirizzo IP in spec: loadBalancerIP è un IP di livello Standard, l'annotazione cloud.google.com/network-tier con valore Standard è obbligatoria, perché Google Kubernetes Engine deve creare una regola di forwarding con lo stesso livello di rete dell'indirizzo IP specificato. Poiché Google Kubernetes Engine 1.17 e versioni successive, il livello di rete predefinito per creare regole di forwarding è Premium, indipendentemente dal livello di rete predefinito del progetto.

Tutte le porte

Il controller GKE imposta automaticamente il campo allPorts nella regola di forwarding se sono presenti 5 o più porte nelle specifiche del servizio in GKE 1.20.6 e versioni successive o 1.21 e versioni successive. Questo comportamento è disponibile anche nelle versioni GKE 1.18 e successive e 1.19 e successive, se abiliti l'impostazione secondaria del bilanciatore del carico di rete passthrough interno sul cluster.

Se crei manualmente un bilanciatore del carico di rete passthrough interno, puoi scegliere il gruppo di istanze dei nodi Google Kubernetes Engine come backend. I servizi Kubernetes di type: NodePort sono disponibili tramite il bilanciatore del carico di rete passthrough interno.

Network Service Tiers

L'annotazione cloud.google.com/network-tier specifica il livello di servizio di rete da utilizzare per la regola di forwarding esterno e l'indirizzo IP in GKE 1.19 e versioni successive. I valori validi sono Standard e Premium. Il valore predefinito è Premium.

Questa annotazione è supportata solo con bilanciatori del carico esterni.

Passaggi successivi