Per creare cluster Google Kubernetes Engine (GKE) scalabili e sicuri, devi gestire in modo efficace l'indirizzamento IP. Questo documento fornisce una panoramica completa di come GKE utilizza gli indirizzi IP per la comunicazione dei cluster, dei modelli di networking supportati e delle best practice per una gestione efficace degli indirizzi IP.
Questo documento è destinato agli architetti cloud e agli specialisti di networking che progettano e realizzano l'architettura di rete per la loro organizzazione. Per ulteriori informazioni sui ruoli comuni e sulle attività di esempio Google Cloud, consulta Ruoli e attività utente comuni di GKE Enterprise.
Prima di procedere, assicurati di conoscere i seguenti concetti:
- Networking di base: inclusi indirizzi IP, CIDR, firewall, e Network Address Translation (NAT).
- Componenti principali di Kubernetes: come cluster, nodi, pod e servizi.
In che modo gli indirizzi IP connettono i componenti GKE
GKE si basa sul modello di networking di Kubernetes, che richiede che ogni componente abbia un indirizzo IP distinto per la comunicazione. Le sezioni seguenti descrivono come GKE assegna e utilizza gli indirizzi IP per i componenti principali del cluster:
Nodi: GKE assegna a ogni nodo, che è un'istanza VM di Compute Engine, un indirizzo IP interno dall'intervallo di indirizzi IP principale della subnet associata al relativo pool di nodi. Questo indirizzo IP consente la comunicazione tra il nodo e il control plane di Kubernetes. I nodi possono anche avere un indirizzo IP esterno per l'accesso a internet in uscita.
Pod: seguendo il modello "IP per pod" di Kubernetes, GKE assegna a ogni pod un indirizzo IP univoco da un intervallo CIDR dei pod allocato al nodo. In GKE, la rete VPC instrada in modo nativo gli indirizzi IP dei pod. Questa instradabilità integrata consente la comunicazione diretta tra i pod, anche su nodi diversi, senza richiedere la Network Address Translation (NAT). Tutti i container all'interno di un singolo pod condividono lo stesso indirizzo IP e possono comunicare tramite
localhost.Servizi: GKE assegna a ogni servizio Kubernetes un indirizzo IP virtuale stabile, (`ClusterIP`) da un intervallo di indirizzi IP secondari dedicato.
ClusterIPQuestoClusterIPfornisce un endpoint singolo e affidabile per un gruppo di pod. Quando invii traffico aClusterIP, GKE lo bilancia automaticamente su un pod integro all'interno di quel servizio.Control plane: nei cluster privati, il control plane risiede all'interno di un progetto tenant gestito da Google e utilizza il proprio intervallo di indirizzi IP interni. Questo progetto tenant si connette alla tua rete VPC, consentendo una comunicazione sicura tra il control plane e i nodi nella rete VPC del cluster. In genere, questa connessione utilizza Private Service Connect.
Bilanciatori del carico: per esporre le applicazioni a internet o all'interno della tua rete VPC, puoi configurare GKE in modo che utilizzi i Google Cloud bilanciatori del carico. I bilanciatori del carico esterni utilizzano indirizzi IP pubblici. I bilanciatori del carico interni utilizzano indirizzi IP interni dall'intervallo di subnet principale della rete VPC.
La tabella seguente riassume come GKE assegna gli indirizzi IP ai componenti del cluster:
| Componente | Come vengono assegnati gli indirizzi IP |
|---|---|
| Nodo | GKE assegna un indirizzo IP interno a ogni nodo. GKE alloca questo indirizzo IP dall'intervallo di indirizzi IP principale della subnet associata al pool di nodi del nodo. Questa subnet può essere la subnet predefinita del cluster o una subnet aggiuntiva. |
| Pod | GKE assegna a ogni pod un indirizzo IP univoco dall'intervallo CIDR dei pod allocato al relativo nodo. |
| Servizio (ClusterIP) | GKE assegna a ogni servizio un indirizzo IP virtuale stabile
(ClusterIP) da un intervallo di indirizzi IP secondari dedicato
all'interno della rete VPC del cluster. |
| Control plane | Nei cluster privati, il control plane GKE ha il proprio intervallo di indirizzi IP interni all'interno di un progetto tenant gestito da Google. Questo progetto tenant si connette alla tua rete VPC, in genere utilizzando Private Service Connect. |
| Bilanciatore del carico | I bilanciatori del carico esterni utilizzano indirizzi IP pubblici. I bilanciatori del carico interni utilizzano indirizzi IP interni dall'intervallo di indirizzi IP principale della subnet del cluster. |
Indirizzamento IP di Kubernetes e implementazione GKE
Per utilizzare GKE in modo efficace, devi comprendere le differenze tra il modello di networking astratto di Kubernetes e il modo in cui GKE implementa questo modello su Google Cloud.
Modello di indirizzamento IP di Kubernetes: il progetto open source Kubernetes specifica che ogni pod riceve un indirizzo IP univoco. Tutti gli indirizzi IP dei pod possono comunicare direttamente senza Network Address Translation (NAT). Questo approccio contribuisce a garantire uno spazio di rete flat in cui i pod possono raggiungersi a vicenda utilizzando gli indirizzi IP assegnati.
Implementazione dell'indirizzamento IP di GKE: GKE implementa il modello di indirizzamento IP di Kubernetes su Google Cloud integrandosi con il networking nativo di VPC. Quando crei un pod, GKE alloca il relativo indirizzo IP da un intervallo di indirizzi IP alias VPC. In questo modo, l'indirizzo IP di ogni pod è instradabile in modo nativo all'interno dell'intera rete VPC. Ciò consente la comunicazione diretta non solo tra i pod, ma anche con altre Google Cloud risorse, come le istanze Compute Engine e i database Cloud SQL. Allo stesso modo, GKE gestisce gli indirizzi IP dei
Servicedi Kubernetes (ad esempioClusterIP) all'interno della rete VPC. Quando creiLoadBalancerservizi per l'esposizione esterna, GKE esegue il provisioning Google Cloud dei bilanciatori del carico. Questi bilanciatori del carico utilizzano indirizzi IP pubblici o interni della rete VPC. GKE utilizza Google Cloud' l'infrastruttura di indirizzamento IP e di networking robusta per implementare i concetti di networking basati su IP di Kubernetes in modo scalabile e sicuro
Modello di networking GKE: cluster nativi di VPC
GKE implementa il modello di networking di Kubernetes utilizzando il networking nativo di VPC, che è una funzionalità di base Google Cloud .
Questo modello utilizza intervalli di indirizzi IP alias. In un cluster nativo di VPC, Kubernetes configura gli indirizzi IP dei pod come intervalli di indirizzi IP alias sull'interfaccia di rete virtuale del nodo.
Questa implementazione offre diversi vantaggi principali:
- Instradabilità nativa di VPC:gli indirizzi IP dei pod sono instradabili direttamente all'interno della rete VPC. Ciò semplifica la progettazione della rete e consente una comunicazione diretta a bassa latenza tra i pod e altre Google Cloud risorse, come le istanze Compute Engine e le istanze Cloud SQL.
- Conserva la quota di route:utilizzando gli indirizzi IP alias per i pod, GKE non crea route statiche personalizzate per ogni nodo. Ciò consente di conservare la quota di route VPC, un miglioramento significativo rispetto ai cluster basati su route legacy, ed è importante per i deployment su larga scala.
- Migliora la sicurezza:l'instradabilità nativa di VPC consente di applicare le regole firewall native di VPC direttamente al traffico dei pod, migliorando la sicurezza a livello di rete.
Il networking nativo di VPC è la modalità di networking predefinita e consigliata per tutti i cluster GKE.
Perché una gestione efficace degli indirizzi IP è fondamentale
Per assicurarti che il cluster possa scalare e mantenere l'integrità dell'applicazione, devi pianificare in modo efficace lo spazio degli indirizzi IP:
- Garantisci la scalabilità: pianifica in modo efficace gli intervalli di indirizzi IP di nodi, pod e servizi per evitare l'esaurimento degli indirizzi IP e consentire al cluster di scalare senza richiedere una riprogettazione della rete che causi interruzioni.
- Garantisci l'affidabilità: evita di sovrapporre gli intervalli di indirizzi IP tra il tuo cluster GKE e altre reti, come gli ambienti on-premise connessi tramite Cloud VPN. Gli intervalli sovrapposti possono causare conflitti di routing, comportamenti imprevedibili e interruzioni del servizio.
- Rafforza la sicurezza: gestisci gli indirizzi IP in modo efficace per rafforzare la sicurezza della rete. Definisci i criteri di rete di Kubernetes per controllare il flusso di traffico tra i pod e configura le regole firewall per l'isolamento dei carichi di lavoro a livello di rete.
Scegliere un modello di indirizzamento IP per il cluster
GKE supporta diverse configurazioni dello stack di rete per soddisfare i tuoi requisiti di networking, tra cui le opzioni solo IPv4, dual-stack (IPv4 e IPv6) e le opzioni solo IPv6 in arrivo.
Solo IPv4 (stack singolo)
Questa è la configurazione standard e più comune, in cui tutti i componenti del cluster utilizzano indirizzi IPv4. Anche all'interno di un modello solo IPv4, GKE offre flessibilità:
- Indirizzi IP privati RFC 1918: utilizza gli intervalli di indirizzi IP privati RFC
1918 (ad esempio
10.0.0.0/8) per il cluster. - Indirizzi IP pubblici utilizzati privatamente (PUPI): se la tua organizzazione non dispone di spazio di indirizzi IP privati sufficiente, puoi utilizzare gli intervalli di indirizzi IP pubblici per l'uso interno all'interno della rete VPC. Quando utilizzi i PUPI, devi configurare l'agente di IP masquerading. Questo agente esegue la Network Address Translation dell'origine (SNAT) sul traffico in uscita dai pod. Senza SNAT, il traffico di ritorno a un pod che utilizza un PUPI viene instradato tramite la rete internet pubblica e non va a buon fine. L'agente di IP masquerading impedisce questo comportamento modificando l'indirizzo IP di origine dei pacchetti in uscita dal PUPI del pod all'indirizzo IP interno del nodo. Questo approccio contribuisce a garantire che il traffico di ritorno venga instradato correttamente al nodo e poi inoltrato al pod originale.
Dual-stack (IPv4 e IPv6)
Un cluster dual-stack utilizza sia il protocollo IPv4 che IPv6. GKE assegna sia un indirizzo IPv4 che un indirizzo IPv6 a nodi, pod e servizi in un cluster dual-stack. Questo modello è ideale per:
- Facilitare una transizione graduale a IPv6.
- Garantire la compatibilità sia con i carichi di lavoro compatibili con IPv6 sia con i client e i servizi esistenti solo IPv4.
Puoi attivare il networking dual-stack quando crei un cluster oppure puoi aggiornare un cluster single-stack esistente a dual-stack.
Passaggi successivi
- Per scoprire di più sui vantaggi della modalità di networking predefinita di GKE, consulta Informazioni sui cluster nativi di VPC.
- Per iniziare, scopri come creare un cluster nativo di VPC.
- Per indicazioni sul dimensionamento degli intervalli di indirizzi IP del cluster, consulta Pianificazione dell'intervallo di indirizzi IP per i cluster nativi di VPC.
- Per assistenza in caso di problemi comuni, consulta Risolvere i problemi relativi all'agente di IP masquerading.