Questa pagina spiega come funziona il mascheramento degli indirizzi IP in Google Kubernetes Engine (GKE) e offre opzioni di configurazione per scenari diversi.
Panoramica del mascheramento degli indirizzi IP
Il mascheramento degli indirizzi IP è una forma di SNAT (Network Address Translation) di origine che esegue traduzioni degli indirizzi IP multiple-to-one. GKE può utilizzare indirizzi IP il mascheramento per modificare gli indirizzi IP di origine dei pacchetti inviati dai pod.
Per una panoramica più generale sul mascheramento degli IP in qualsiasi implementazione Kubernetes, consulta la guida dell'utente di IP Masquerade Agent.
Mascheramento degli IP GKE
Quando il mascheramento degli IP si applica a un pacchetto emesso da un pod, GKE cambia l'indirizzo IP di origine del pacchetto dall'indirizzo IP del pod a quello sottostante all'indirizzo IP del nodo. La mascheratura dell'indirizzo IP di origine di un pacchetto è utile quando il destinatario è configurato per ricevere pacchetti solo dall'IP del nodo del cluster indirizzi IP esterni.
Sui nodi Linux, GKE configura le regole iptables
.
GKE utilizza lo standard ip-masq-agent
DaemonSet
per configurare il piano dati appropriato.
Il mascheramento degli IP non è supportato con i pool di nodi di Windows Server.
Mascheramento degli IP per i cluster standard
Nei cluster Standard, il comportamento di mascheramento degli IP del cluster è regolato in base a tre fattori:
- Sia che tu abbia eseguito il deployment o sia che GKE abbia eseguito automaticamente il deployment
ip-masq-agent
DaemonSet nel cluster. Per saperne di più sugli scenari in cui GKE esegue automaticamente il deployment del DaemonSetip-masq-agent
, vedi Quando Il deployment diip-masq-agent
viene eseguito automaticamente. - Se hai creato un elenco
nonMasqueradeCIDRs
personalizzato nelip-masq-agent
configMap. - Se nel cluster non viene eseguito il deployment di nessun DaemonSet
ip-masq-agent
, se hai creato il cluster con il flag--disable-default-snat
. A per ulteriori informazioni su questo flag, consulta Effetto del--disable-default-snat
.
La tabella seguente riassume le configurazioni di mascheramento IP per Cluster GKE standard:
Configurazione cluster | Comportamento SNAT risultante |
---|---|
Il DaemonSet |
GKE conserva gli indirizzi IP dei pod di origine
di pacchetti inviati alle destinazioni specificate nello
Elenco GKE cambia gli indirizzi IP dei pod di origine in IP del nodo di origine
indirizzi IP per i pacchetti inviati a destinazioni non specificate nel
Elenco |
Il DaemonSet |
GKE conserva gli indirizzi IP dei pod di origine di pacchetti inviati a una serie di destinazioni non mascherate. GKE modifica gli indirizzi IP dei pod di origine in indirizzi IP di origine degli indirizzi IP dei nodi per i pacchetti inviati a destinazioni all'esterno di le destinazioni predefinite, senza accesso mascherato. |
Il DaemonSet |
GKE conserva gli indirizzi IP dei pod di origine di pacchetti inviati a una serie di destinazioni non mascherate. GKE modifica gli indirizzi IP dei pod di origine in indirizzi IP di origine degli indirizzi IP dei nodi per i pacchetti inviati a destinazioni all'esterno di le destinazioni predefinite, senza accesso mascherato. |
Il DaemonSet |
GKE conserva gli indirizzi IP dei pod di origine per i pacchetti inviati a tutte le destinazioni. Rivedi Conservare l'indirizzo IPv4 del pod da fonti verso destinazioni internet per importanti considerazioni sul routing quando conservi gli indirizzi di origine IPv4 dei pod e devi instradare i pacchetti su internet. |
Mascheramento degli IP per i cluster Autopilot
Nei cluster Autopilot, GKE esegue sempre il deployment
ip-masq-agent
DaemonSet. Ad eccezione dei pacchetti inviati dai pod all'infrastruttura
di nodi, pod o servizi, puoi controllare il comportamento di mascheramento IP utilizzando
EgressNATPolicy
. Per usare un'EgressNATPolicy
, la modalità Autopilot
il cluster deve soddisfare entrambi i requisiti:
- Il cluster deve utilizzare GKE versione 1.23.4-gke.1600 o successiva oppure 1.22.7-gke.1500 o versioni successive.
- Il cluster deve essere stato creato con GKE Dataplane V2 attivata.
La tabella seguente riassume le configurazioni di mascheramento IP per Cluster GKE Autopilot:
Configurazione del cluster Autopilot | Comportamento SNAT risultante |
---|---|
Il cluster include un oggetto |
GKE conserva gli indirizzi IP dei pod di origine
di pacchetti inviati alle destinazioni specificate
GKE cambia gli indirizzi IP dei pod di origine in IP del nodo di origine
indirizzi per i pacchetti inviati a destinazioni non specificate
|
Il cluster non include una
|
Il valore predefinito
|
Esempi di configurazione
Espandi le sezioni seguenti per visualizzare il mascheramento e la configurazione degli IP di cluster in base al tipo di cluster.
Riferimento per la configurazione avanzata
Quando viene eseguito automaticamente il deployment di ip-masq-agent
Nei cluster in modalità Autopilot, GKE esegue sempre il deployment
ip-masq-agent
DaemonSet.
Nei cluster Standard, GKE esegue il deployment di una classe ip-masq-agent
DaemonSet quando il flag --disable-default-snat
non è impostato e il cluster
utilizza una delle seguenti combinazioni di configurazione:
Il cluster non utilizza GKE Dataplane V2 e la rete dell'applicazione dei criteri sia abilitata.
Il cluster utilizza un intervallo di indirizzi IP del pod che non rientra in
10.0.0.0/8
.
Affinché il DaemonSet ip-masq-agent
sia efficace, devi inoltre
Specificare l'elenco nonMasqueradeCIDRs
nel ConfigMap ip-masq-agent
. Per ulteriori informazioni, vedi
come configurare un agente di mascheramento IP.
Quando è presente un DaemonSet ip-masq-agent
in un cluster, GKE
aggiorna e riconcilia un pod di gestione su ciascun nodo del cluster.
Destinazioni predefinite non mascherate
Le destinazioni predefinite non mascherate sono:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
100.64.0.0/10
192.0.0.0/24
192.0.2.0/24
192.88.99.0/24
198.18.0.0/15
198.51.100.0/24
203.0.113.0/24
240.0.0.0/4
Le destinazioni predefinite non mascherate sono applicabili ai cluster con il le seguenti configurazioni:
Il cluster ha un valore
ip-masq-agent
DaemonSet, ma nononMasqueradeCIDRs
elenco specificato nel relativoip-masq-agent
ConfigMap. È incluso il caso in cui ha un DaemonSetip-masq-agent
, ma non haip-masq-agent
ConfigMap.Il cluster non ha un
ip-masq-agent
DaemonSet, e il--disable-default-snat
segnala non è impostato.
Le destinazioni predefinite non mascherate non sono applicabili ai cluster con le seguenti configurazioni:
Il cluster ha un valore
ip-masq-agent
DaemonSet, e disponi di unnonMasqueradeCIDRs
personalizzato elenco specificato nel ConfigMapip-masq-agent
. Un elementononMasqueradeCIDRs
personalizzato sostituisce sempre le destinazioni predefinite non mascherate quando ha un DaemonSetip-masq-agent
.Il cluster non ha un
ip-masq-agent
DaemonSet, e il--disable-default-snat
segnala è impostata. Vedi Effetto dell'--disable-default-snat
per ulteriori dettagli su questa configurazione.
Effetto del flag --disable-default-snat
La --disable-default-snat
modifica il comportamento SNAT di GKE predefinito in modo che l'origine
Gli indirizzi IP dei pod vengono conservati per i pacchetti inviati a tutte le destinazioni.
GKE implementa il comportamento SNAT predefinito non eseguendo il deployment
ip-masq-agent
DaemonSet nel cluster.
Il flag --disable-default-snat
non ha effetto quando un cluster include un'espressione
ip-masq-agent
DaemonSet:
- Poiché i cluster Autopilot includono sempre un'entità
ip-masq-agent
DaemonSet, il flag--disable-default-snat
non ha alcun effetto su Autopilot.
- Per i cluster standard: se esegui il deployment di un'istanza
ip-masq-agent
DaemonSet o se GKE esegue automaticamente il deployment di unip-masq-agent
DaemonSet, il flag--disable-default-snat
non ha per il cluster, anche se è impostato--disable-default-snat
. Quandoip-masq-agent
DaemonSet presente nel cluster, non mascherato le destinazioni sono specificate esplicitamente in un elencononMasqueradeCIDRs
di dal ConfigMapip-masq-agent
o dal destinazioni quando nessun elencononMasqueradeCIDRs
è definito.
Puoi impostare il flag --disable-default-snat
aggiornando un cluster dopo che è stato
un'istanza di blocco note. Purché il cluster non abbia ip-masq-agent
DaemonSet
di cui è stato eseguito il deployment, la disabilitazione della SNAT predefinita diventa effettiva dopo che il cluster ha sostituito tutte
dei suoi nodi, a volte ore dopo. Il motivo è che GKE
rispetti la manutenzione configurata
finestre
quando sostituisce i nodi nel cluster. Se non hai configurato alcuna manutenzione
devi eseguire manualmente il ciclo dei nodi nel cluster prima che
Il flag --disable-default-snat
ha qualsiasi effetto.
Accesso mascherato locale tramite link
L'intervallo 169.254.0.0/16
viene utilizzato per gli indirizzi IP locali rispetto al collegamento. Locale rispetto al collegamento
Per mascheramento si intende la modifica dell'indirizzo IP di un pod di origine in un IP del nodo di origine
per i pacchetti inviati alle destinazioni 169.254.0.0/16
.
I cluster Autopilot conservano sempre gli indirizzi IP dei pod di origine per i pacchetti
inviati a 169.254.0.0/16
destinazioni.
Per impostazione predefinita, i cluster Standard
di conservare anche gli indirizzi IP dei pod di origine per i pacchetti inviati a 169.254.0.0/16
destinazioni.
Puoi abilitare il mascheramento degli IP locali rispetto al collegamento in un cluster Standard effettuando entrambe le operazioni seguenti:
- Assicurati che il parametro
masqLinkLocal
esista e che sia impostato suTrue
nelip-masq-agent
configMap. Quando il parametromasqLinkLocal
non è presente inip-masq-agent
configMap, il valore predefinito èFalse
. Per indicazioni, vedi Verificaip-masq-agent
ConfigMap, Creazione delip-masq-agent
ConfigMap, e modifica di unip-masq-agent
esistente ConfigMap. - Assicurati che nel cluster sia stato eseguito il deployment del DaemonSet
ip-masq-agent
. Per consulta le istruzioni sulla verifica dellaip-masq-agent
DaemonSet e il deployment diip-masq-agent
DaemonSet:
Diagnostica container e pod con hostNetwork: true
A meno che non specifichi un indirizzo IP di origine personalizzato per i pacchetti, i pod in esecuzione
con hostNetwork: true
e i container di diagnostica inviano pacchetti con origini
corrispondente all'indirizzo IP del nodo. Per i pod in esecuzione con hostNetwork: true
,
GKE assegna al pod l'indirizzo IP del nodo. GKE
non gestisce gli indirizzi IP per i container di diagnostica, inclusi i container
per il debug dei problemi relativi ai nodi utilizzando
strumenti.
I cluster Autopilot non supportano l'esecuzione di pod con
spec.hostNetwork: true
. Poiché i nodi di un cluster Autopilot
non sono accessibili tramite SSH, non puoi eseguire container di diagnostica al loro interno.
Conservare le origini degli indirizzi IPv4 dei pod verso destinazioni internet
Se la configurazione di mascheramento IP del cluster è una delle seguenti, GKE conserva le origini degli indirizzi IP dei pod per i pacchetti inviati destinazioni, incluse quelle su internet:
- Nei cluster Standard con un DaemonSet
ip-masq-agent
, se hai impostato danonMasqueradeCIDRs
a0.0.0.0
nel ConfigMapip-masq-agent
. - Nei cluster Standard senza un DaemonSet
ip-masq-agent
, se hai imposta il flag--disable-default-snat
.
- Nei cluster Autopilot, se modifichi il valore predefinito
EgressNATPolicy
in modo che
spec.action
siaNoSNAT
espec.destinations
contengaCidr: 0.0.0.0/0
,
Sia nei cluster pubblici che in quelli privati, le origini IPv4 dei pod sono indirizzi IPv4 interni di rete, vale a dire che non sono instradabili su internet. Di conseguenza, quando conservi gli indirizzi IPv4 dei pod di origine per i pacchetti inviati a internet, è necessario utilizzare una tecnica come una delle seguenti per instradare i pacchetti dopo che sono usciti dai nodi del cluster:
- Assicurati che la tua rete VPC abbia una route predefinita con hop successivo del gateway internet e configura un gateway Cloud NAT fornisci servizi NAT pubblici almeno all'indirizzo IPv4 secondario della subnet utilizzati dai pod nel tuo cluster. Per maggiori dettagli, consulta GKE un'interazione nel Panoramica di Cloud NAT.
- Configura la tua rete VPC per utilizzare una route predefinita personalizzata l'hop successivo è un'istanza VM o un bilanciatore del carico di rete passthrough interno, in cui la VM o i backend Il bilanciatore del carico è stato configurato per instradare i pacchetti a internet per conto dei pod.
Ripristino del comportamento SNAT predefinito
Per ripristinare il comportamento predefinito SNAT quando un DaemonSet ip-masq-agent
è
presenti in un cluster, elimina il ConfigMap ip-masq-agent
associato. La
ip-masq-agent
DaemonSet ripristina il comportamento di mascheramento IP predefinito sulla
i nodi che gestisce.
Per ripristinare il comportamento predefinito SNAT quando un DaemonSet ip-masq-agent
è
non presente in un cluster, dovrai eseguire l'upgrade del pool di nodi
(assicurati che --disable-default-snat
non sia impostato sul cluster).
Effetto del criterio NAT in uscita nei cluster Autopilot
Il criterio NAT in uscita di GKE consente di configurare il mascheramento IP su Autopilot. Puoi utilizzare il servizio NAT in uscita di GKE definizione di risorse personalizzate (CRD) dei criteri per modificare gli indirizzi IP di origine di e pacchetti inviati dai pod.
Per sicurezza o esaurimento dell'indirizzo IP Per motivi di questo, puoi eseguire il mascheramento degli indirizzi IP dall'intervallo di indirizzi IP del pod all'interno del nodo per i messaggi in uscita. per il traffico verso le reti on-premise. Ad esempio, puoi utilizzare un modello non RFC-1918 per i cluster Autopilot e utilizza un intervallo RFC-1918 per i nodi. Tuttavia, se i pod devono comunicare con reti on-premise che utilizzano non RFC-1918, gli indirizzi IP possono sovrapporsi. Per evitare perdite di traffico, puoi configurare un criterio NAT in uscita per non pubblicizzare i pod che non richiedono la connessione RFC-1918 alle reti on-premise. La Il criterio NAT in uscita maschera i pod non RFC-1918 per utilizzare è invece l'intervallo RFC-1918 del nodo. Assicurati che l'intervallo di nodi non si sovrapponga con qualsiasi intervallo on-premise, oppure può causare un loop di traffico.
GKE applica il comportamento di mascheramento degli IP per i cluster Autopilot tramite seguente processo:
- GKE esegue il deployment del controller NAT in uscita e di
ip-masq-agent
. - Tu crei il criterio NAT in uscita.
- Il controller GKE traduce il criterio nel ConfigMap
ip-masq-agent
. - Il DaemonSet
ip-masq-agent
legge il ConfigMap, quindi GKE applica il comportamento di mascheramento degli IP.
Criteri generati automaticamente
GKE supporta i seguenti due criteri NAT in uscita generati automaticamente:
- Predefinita: questi criteri sono modificabili.
- Gestiti da GKE: questi criteri sono fissi e non sono modificabili.
Criterio predefinito
GKE predefinisce un insieme di intervalli di indirizzi IP predefiniti. Quando i pacchetti vengono inviati a queste destinazioni, il cluster non esegue il mascheramento dell'indirizzo IP e conserva gli indirizzi IP dei pod di origine. Per modificare questi indirizzi IP predefiniti, per gli intervalli di indirizzi, consulta Modifica ed esegui il deployment del criterio NAT in uscita.
Il seguente manifest descrive un criterio NAT in uscita predefinito:
Name: default
Namespace:
Labels: <none>
Annotations: <none>
API Version: networking.gke.io/v1
Kind: EgressNATPolicy
Metadata:
Creation Timestamp: 2022-03-16T21:05:45Z
Generation: 2
Managed Fields:
API Version: networking.gke.io/v1
Fields Type: FieldsV1
fieldsV1:
f:spec:
.:
f:action:
f:status:
Manager: egress-nat-controller
Operation: Update
Time: 2022-03-16T21:05:45Z
API Version: networking.gke.io/v1
Fields Type: FieldsV1
fieldsV1:
f:spec:
f:destinations:
Manager: kubectl
Operation: Update
Time: 2022-03-17T01:58:13Z
Resource Version: 189346
UID: 06acbb5a-23ba-4c2a-bb34-9b6ed8c4a87f
Spec:
Action: NoSNAT
Destinations:
Cidr: 10.0.0.0/8
Cidr: 172.16.0.0/12
Cidr: 192.168.0.0/16
Cidr: 240.0.0.0/4
Cidr: 192.0.2.0/24
Cidr: 198.51.100.0/24
Cidr: 203.0.113.0/24
Cidr: 100.64.0.0/10
Cidr: 198.18.0.0/15
Cidr: 192.0.0.0/24
Cidr: 192.88.99.0/24
Status:
Events: <none>
Gli intervalli CIDR corrispondono intervalli di destinazione predefiniti non di mascheramento.
Gestito dal criterio GKE
Il criterio NAT in uscita di GKE riserva un intervallo statico di indirizzi IP necessari di preservare il funzionamento del cluster. Questo intervallo statico contiene l'IP di pod, servizio e nodo di indirizzi IP del cluster e potrebbe sovrapporsi al criterio predefinito.
Puoi identificare questo criterio tramite un hash dinamico da 8 byte (gke-{CLUSTER_SHORT_HASH}
) assegnato da GKE. Non puoi modificare
queste norme.
Il manifest seguente descrive un criterio gestito da GKE denominato gke-bbfa6c0e-1
:
Name: gke-bbfa6c0e-1
Namespace:
Labels: <none>
Annotations: <none>
API Version: networking.gke.io/v1
Kind: EgressNATPolicy
Metadata:
Creation Timestamp: 2022-03-16T21:05:46Z
Generation: 1
Managed Fields:
API Version: networking.gke.io/v1
Fields Type: FieldsV1
fieldsV1:
f:spec:
.:
f:action:
f:destinations:
f:status:
Manager: egress-nat-controller
Operation: Update
Time: 2022-03-16T21:05:46Z
Resource Version: 11699
UID: 0201b5de-a6f6-4926-822b-31ed7cdee2c6
Spec:
Action: NoSNAT
Destinations:
Cidr: 10.119.128.0/17
Cidr: 10.120.0.0/22
Cidr: 10.128.0.0/20
Status:
Events: <none>
Passaggi successivi
- Scopri come utilizzare il criterio NAT in uscita per configurare il mascheramento IP nei cluster Autopilot.
- Leggi la panoramica della rete GKE.
- Scopri di più sulla configurazione delle reti autorizzate.