Il networking di Google Kubernetes Engine (GKE) fornisce una base potente, scalabile e sicura per le tue applicazioni containerizzate, basata sulla VPC globale di Google. Traduce il modello di networking Kubernetes astratto in risorse concrete e ad alte prestazioni come bilanciatori del carico globali e networking VM a velocità effettiva elevata.
Questo documento e il resto di questo set di documentazione sono destinati agli architetti cloud e agli specialisti di networking che progettano l'architettura di rete della loro organizzazione.
Perché il networking di Kubernetes è diverso
Quando utilizzi Kubernetes per orchestrare le tue applicazioni, il modo di pensare alla progettazione della rete cambia. Con Kubernetes, ti concentri su come comunicano pod, servizi e client esterni, anziché gestire il networking di singoli host o macchine virtuali (VM). Questa astrazione semplifica il deployment e lo scaling delle applicazioni eliminando complessità come il mapping manuale delle porte.
Prerequisiti
Prima di scoprire di più sul networking in GKE, devi comprendere quanto segue:
- Concetti chiave di networking generale, Google Cloude Kubernetes.
- Leggi Inizia a scoprire GKE.
Networking di base e Google Cloud principi fondamentali
GKE si basa su principi di networking standard. Per capire come GKE gestisce e instrada il traffico all'interno e tra i cluster, devi conoscere i seguenti concetti di base relativi al networking.
Livelli e protocolli di Networking
Per capire come i dati viaggiano attraverso una rete, inizia con i livelli di networking. GKE utilizza ampiamente i concetti dei livelli di trasporto, internet e applicazione dello stack di rete. Dovresti avere familiarità con le loro funzioni di base e con i protocolli comuni come HTTP, DNS e la suite TCP/IP. Per ulteriori informazioni, consulta il modello OSI.
Livello di trasporto: Transmission Control Protocol (TCP) o User Datagram Protocol (UDP): gestisce la comunicazione end-to-end tra le applicazioni. Il protocollo TCP (Transmission Control Protocol) fornisce una trasmissione affidabile, ordinata e con controllo degli errori, essenziale per la maggior parte del traffico delle applicazioni. User Datagram Protocol (UDP) offre una comunicazione più rapida e senza connessione, spesso utilizzata per lo streaming o i giochi. GKE utilizza entrambi i protocolli per la comunicazione tra pod e servizi.
Livello internet - Internet Protocol (IP): indirizza e instrada i pacchetti su reti diverse. Ogni pod e nodo in GKE riceve un indirizzo IP e il routing degli indirizzi IP determina il modo in cui il traffico si fa strada attraverso il cluster e la rete VPC.
Livello applicazione: HTTP (Hypertext Transfer Protocol) e DNS (Domain Name System). Questo livello è quello in cui le applicazioni interagiscono con la rete. HTTP e HTTPS sono fondamentali per la comunicazione web e vengono comunemente utilizzati da controller Ingress e bilanciatori del carico per esporre le applicazioni. Il DNS è fondamentale per la Service Discovery in Kubernetes, in quanto traduce i nomi dei servizi leggibili in indirizzi IP.
Indirizzamento IP e notazione CIDR
Devi comprendere l'indirizzamento IP e la notazione CIDR (Classless Inter-Domain Routing) perché il modello di rete Kubernetes utilizza ampiamente gli indirizzi IP per la comunicazione tra tutti i suoi componenti. CIDR è fondamentale per pianificare l'allocazione degli indirizzi IP del cluster all'interno della rete VPC Google Cloud. Consente di definire blocchi di indirizzi IP per pod, servizi e nodi. Ad esempio, l'allocazione di 10.10.0.0/16 per i tuoi pod
riserva 65.536 indirizzi IP. Una pianificazione CIDR corretta aiuta a evitare situazioni
in cui esaurisci gli indirizzi IP man mano che il cluster viene scalato.
Utilità di rete Linux
GKE utilizza le funzionalità del kernel Linux sottostante per implementare il routing del traffico e il bilanciamento del carico all'interno del cluster. Devi avere familiarità con i concetti e le utilità di base di gestione della rete Linux, come le tabelle di routing e iptables.
Tradizionalmente, kube-proxy, un componente chiave di Kubernetes su ogni nodo, programma
queste utilità per intercettare il traffico destinato a un servizio e reindirizzarlo a
uno dei pod di backend. I cluster GKE moderni che utilizzano
GKE Dataplane V2 sostituiscono iptables con eBPF per migliorare
le prestazioni e l'osservabilità.
Comprendere il modello di networking di Kubernetes
Il modello di networking di Kubernetes definisce il modo in cui le applicazioni containerizzate
comunicano all'interno di un cluster. A differenza dei modelli convenzionali incentrati sulle macchine virtuali, Kubernetes enfatizza la comunicazione basata su pod e servizi. Questo
modello rende più prevedibile il networking delle applicazioni astraendo
l'inaffidabilità degli indirizzi IP dinamici dei pod. Poiché i pod sono temporanei e possono essere
ricreati in qualsiasi momento con un nuovo indirizzo IP, la comunicazione diretta con gli indirizzi IP dei pod
è intrinsecamente instabile. Kubernetes risolve questo problema raggruppando
i pod in un servizio. Un servizio fornisce un indirizzo IP virtuale stabile
(ClusterIP) e un nome DNS coerente a cui le applicazioni possono connettersi in modo affidabile. Questo endpoint stabile, combinato con una rete piatta che consente a tutti
i pod di comunicare direttamente senza bisogno di NAT, crea una base solida
per le applicazioni moderne containerizzate.
Principi chiave del modello di networking di Kubernetes
Ogni pod ha un indirizzo IP univoco: ogni pod in un cluster Kubernetes ha il proprio indirizzo IP, che viene condiviso da tutti i container all'interno del pod. Questo indirizzo IP univoco consente ai pod di agire come host individuali sulla rete, in modo simile alle macchine virtuali.
Comunicazione flat da pod a pod senza NAT: tutti i pod possono comunicare direttamente tra loro utilizzando i rispettivi indirizzi IP, indipendentemente dal nodo su cui vengono eseguiti. In GKE, questa comunicazione diretta viene ottenuta utilizzando cluster VPC nativi, in cui gli indirizzi IP dei pod sono indirizzi IP alias all'interno della tua rete VPC. Questi indirizzi IP alias rendono i pod direttamente instradabili all'interno del VPC, il che elimina la necessità di Network Address Translation (NAT) e semplifica la comunicazione tra i nodi.
I servizi forniscono endpoint stabili: poiché i pod sono temporanei e possono essere ricreati in qualsiasi momento con nuovi indirizzi IP, la comunicazione diretta con gli indirizzi IP dei pod non è affidabile. I servizi Kubernetes risolvono questo problema raggruppando un insieme di pod ed esponendo un indirizzo IP stabile (
ClusterIP) e un nome DNS. Questa astrazione del problema consente l'accesso coerente a un insieme dinamico di pod.Service Discovery integrata con DNS: Kubernetes include un servizio DNS integrato che assegna automaticamente nomi DNS ai servizi. Le applicazioni possono utilizzare questi nomi (ad esempio,
my-service.my-namespace.svc.cluster.local) per individuare e comunicare in modo affidabile con altri servizi.Bilanciamento del carico integrato: quando i client inviano traffico all'indirizzo
ClusterIPdi un servizio, le regole di rete sul nodo (programmate dakube-proxyo GKE Dataplane V2) intercettano il traffico e lo bilanciano del carico su tutti i pod integri in quel servizio. Questa distribuzione avviene all'origine, il che la rende altamente efficiente e contribuisce a garantire l'alta affidabilità.
In sintesi, il modello di networking di Kubernetes astrae molte complessità di rete convenzionali in un insieme di primitive più semplice e potente per le applicazioni containerizzate. Consentendo la comunicazione diretta dei pod, endpoint di servizio stabili e bilanciamento del carico e DNS integrati, fornisce una base solida e scalabile per le applicazioni moderne in container.
La relazione tra GKE e Google Cloud
Il networking di GKE funge da ponte tra il modello concettuale del networking di Kubernetes e l'infrastruttura fisica di Google Cloud:
Modello di networking di Kubernetes: Kubernetes definisce regole in base alle quali ogni pod riceve il proprio indirizzo IP, consentendo la comunicazione diretta da pod a pod senza la necessità di NAT.
Google Cloud Networking: questa è l'infrastruttura sottostante, inclusi VPC, subnet, firewall e bilanciatori del carico.
Networking GKE: questo livello di connessione implementa il modello Kubernetes utilizzando l'infrastruttura di Google Cloud.
Container Network Interface (CNI): GKE utilizza un plug-in CNI su ogni nodo per gestire l'allocazione degli indirizzi IP dei pod e collegare i pod alla rete del nodo.
Control plane GKE: questi componenti interagiscono con Google Cloud per configurare automaticamente le route VPC per gli intervalli IP dei pod, gestire le regole firewall e eseguire il provisioning dei bilanciatori del carico in base ai tuoi deployment Kubernetes.
Perché Google Cloud la conoscenza del networking è essenziale per GKE
GKE si basa sull'infrastruttura di rete. Google CloudGKE non crea un livello di rete separato, ma utilizza i componenti di rete Google Cloud esistenti. Di conseguenza, comprendere il networking è essenziale per progettare e proteggere i tuoi cluster GKE. Google Cloud
Ecco perché Google Cloud le nozioni di base sul networking sono importanti:
Il cluster viene eseguito in un VPC: ogni cluster GKE opera all'interno di un VPC. Tutti gli indirizzi IP (per nodi, pod e servizi) provengono dagli intervalli di indirizzi IP definiti nelle subnet VPC. Per allocare correttamente gli indirizzi IP ed evitare di esaurirli, devi avere una conoscenza pratica di VPC e della progettazione delle subnet. Per saperne di più, consulta la documentazione VPC.
L'esposizione delle applicazioni utilizza i Google Cloud bilanciatori del carico: quando esponi le applicazioni all'esterno del cluster utilizzando un servizio LoadBalancer o Ingress, GKE esegue il provisioning di un bilanciatore del carico Google Cloud integrato. Un servizio LoadBalancer viene in genere utilizzato per il traffico di livello 4, mentre un Ingress viene utilizzato per il traffico HTTP(S) di livello 7. Comprendere il funzionamento di questi bilanciatori del carico ti aiuta a gestire il traffico esterno, configurare i controlli di integrità e risolvere i problemi di connettività in modo efficace. Per saperne di più, consulta la documentazione di Cloud Load Balancing.
La sicurezza viene applicata tramite Google Cloud regole firewall: GKE crea automaticamente alcune regole firewall per consentire il traffico essenziale del cluster. Tuttavia, la protezione dei tuoi workload richiede la definizione di regole firewall VPC personalizzate. Le configurazioni errate possono bloccare il traffico critico, quindi è importante capire come funzionano queste regole. Per saperne di più, consulta la documentazione di Cloud Next Generation Firewall.
Passaggi successivi
- Scopri di più sui tre pilastri del networking GKE per un'analisi più approfondita dell'architettura.
- Scopri di più su NetworkPolicies di GKE e sui criteri di rete di Kubernetes.
- Scopri di più sull'esposizione delle applicazioni utilizzando i servizi e il concetto di servizi Kubernetes.
- Comprendere Ingress per GKE e Kubernetes Ingress.
- Scopri di più sui cluster nativi di VPC.
- Scopri di più sui vantaggi di GKE Dataplane V2.
- Risolvi i problemi relativi al networking di GKE.