Kubernetes non garantisce che nulla al di fuori di un cluster possa comunicare con il cluster e promette solo di fornire le funzionalità seguenti:
Tutti i pod in un cluster possono comunicare direttamente tra loro senza dover ricorrere a Network Address Translation (NAT). Anche i pod che si trovano su nodi diversi possono comunicare direttamente tra loro.
Gli agenti su un nodo, ad esempio daemon di sistema o kubelet, possono comunicare con tutti i pod su quel nodo.
Pertanto, quando una rete ospita due cluster, come illustrato di seguito, una domanda da chiedersi è come i pod nel cluster 1 comunicano con i pod nel cluster 2. Allo stesso modo, in che modo i client o i server esterni ai cluster, contrassegnati come "Altro client" e "Altro server" nel diagramma, comunicano con un pod all'interno di un cluster?
Questo documento spiega in che modo un modello di rete in modalità piatta e un modello di rete in modalità isola rispondono a queste domande in modo diverso.
Modello di rete in modalità piatta
In una rete completamente integrata o in modalità flat, i pod hanno indirizzi IP univoci in tutti i cluster. Ad esempio, Pod-A
nel cluster 1 ha un indirizzo IP che non vedrai altrove nel cluster 1 o nel cluster 2. Allo stesso modo, Pod-G
nel cluster 2 ha un indirizzo univoco in entrambi i cluster. Ciò significa che i pod del cluster 1 possono comunicare direttamente con qualsiasi pod nel cluster 2 (supponendo che non esistano firewall o altri criteri che bloccano il traffico). Non è necessaria la traduzione di gateway
o indirizzi per la comunicazione pod-pod.
Allo stesso modo, i client e i server esterni a un cluster possono comunicare direttamente con un pod all'interno di un cluster tramite l'indirizzo IP univoco del pod se, ad esempio, il routing è configurato in modo statico nei dispositivi di rete o se i nodi utilizzano il Border Gateway Protocol (BGP) per pubblicizzare la possibilità di gestire il traffico per un determinato intervallo IP.
Di conseguenza, nelle reti piatte, la comunicazione è facile e diretta: non ci sono indirizzi IP sovrapposti e non è necessario utilizzare reti overlay o NAT.
Modello di rete in modalità isola
Un modello di rete in modalità flat è un'opzione se puoi disporre del lusso di un ampio spazio di indirizzi IP e puoi permetterti di assegnare un indirizzo IP univoco a ciascun pod. Tuttavia, se non ti viene offerta una grande varietà di indirizzi IP, il modello di rete in modalità isola è una buona scelta.
In una rete in modalità isolana, i nodi hanno indirizzi IP univoci ma, per essere economici con indirizzi IP scarsi, i pod non hanno indirizzi univoci tra i cluster. Questo non causa problemi perché i pod in un cluster non comunicano mai direttamente con i pod in un altro cluster. Come mostra il diagramma seguente, esistono invece gateway che mediano tra un pod in un cluster e un pod in un altro cluster.
Analogamente, il traffico (in entrata) da un client che entra in un cluster e il traffico (in uscita) in uscita da un cluster vengono gestiti da gateway simili. I gateway possono essere implementati in vari modi. come NAT, indirizzi IP virtuali (VIP) e proxy sono esempi di gateway. Traducono gli indirizzi IP in modo da mantenere privati gli IP dei pod.
Nel modello di rete in modalità isola, gli stessi indirizzi IP dei pod possono essere utilizzati in ogni cluster. Ciò significa che gli indirizzi IP dei pod non devono essere univoci tra i cluster. Come suggerisce il diagramma seguente, puoi utilizzare gli stessi indirizzi IP dei pod in ogni cluster perché un pod in un cluster non comunica mai direttamente con un pod in un altro cluster.
Uno dei principali vantaggi del modello di rete in modalità isola è che gli indirizzi IP dei pod possono essere riutilizzati in questo modo.
Vantaggi e svantaggi dei due modelli
Ecco alcuni vantaggi e svantaggi dei due modelli:
Una rete piatta è più veloce di una rete a isola perché i gateway in modalità isolano eseguono le traduzioni degli indirizzi, che comportano un costo in termini di prestazioni.
Il debug dei problemi dei cluster è più semplice nelle reti piatte perché tutti i contenuti nella rete hanno un indirizzo IP univoco ed è quindi più facile individuare dove si verifica un problema. Ad esempio, gli IP dei pod non vengono mascherati dietro l'indirizzo IP del nodo, pertanto è più facile determinare con esattezza quale pod sta causando i problemi. Analogamente, gli IP dei client non sono oscurati in modalità flat come nella modalità isola e questo favorisce il debug.
Potresti non essere in grado di utilizzare il modello di rete flat se hai pochi indirizzi IP o se lo spazio IP è frammentato (ovvero se non hai grandi blocchi di indirizzi IP). In tal caso, una rete insulare è l'opzione migliore.
È importante notare che i modelli di rete piatta e a isola sono solo due dei possibili modelli di rete e che esistono molte variazioni anche all'interno di questi modelli.