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 | Sì | 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 | Sì | 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
- Leggi la panoramica della rete GKE.
- Scopri di più sui bilanciatori del carico di Compute Engine.
- Scopri di più sui bilanciatori del carico interni.
- Scopri come esporre le applicazioni all'esterno utilizzando i servizi.