Kubernetes non garantisce che nulla al di fuori di un cluster possa comunicare con il cluster e promette solo di fornire le seguenti funzionalità:
Tutti i pod in un cluster possono comunicare direttamente tra loro senza dover ricorrere al NAT (Network Address Translation). Anche i pod che si trovano su nodi diversi possono comunicare direttamente tra loro.
Gli agenti su un nodo, ad esempio i daemon di sistema o un kubelet, possono comunicare con tutti i pod su quel nodo.
Di conseguenza, quando una rete ospita due cluster, come illustrato di seguito, la domanda è: in che modo i pod nel cluster 1 comunicano con i pod nel cluster 2? Analogamente, 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à fissa
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 siano presenti firewall o altri criteri che bloccano il traffico). Per la comunicazione tra pod, non è necessaria
la traduzione di indirizzi o gateway.
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 indicare che possono gestire il traffico per un determinato intervallo IP.
Pertanto, 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
Il modello di rete in modalità flat è un'opzione se hai la possibilità di avere un ampio spazio di indirizzi IP e puoi permetterti di assegnare un indirizzo IP univoco a ogni pod. Tuttavia, se non puoi utilizzare un ampio spazio di indirizzi IP, un modello di rete in modalità isola è un'ottima scelta.
In una rete in modalità isola, i nodi hanno indirizzi IP univoci ma, per essere economici con indirizzi IP scarsi, i pod non hanno indirizzi univoci nei cluster. Ciò non causa problemi, perché i pod in un cluster non comunicano mai direttamente con i pod in un altro cluster. Invece, come mostra il seguente diagramma, esistono 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) da un cluster viene gestito da gateway simili. I gateway possono essere implementati in vari modi. NAT, indirizzi IP virtuali (VIP) e proxy sono alcuni esempi di gateway. Eseguono la traduzione degli indirizzi IP che hanno l'effetto di mantenere privati gli IP dei pod.
Nel modello di rete in modalità isola, è possibile utilizzare gli stessi indirizzi IP dei pod in ogni cluster. In altre parole, gli indirizzi IP dei pod non devono essere univoci nei vari 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
Alcuni dei vantaggi e degli svantaggi dei due modelli sono elencati qui:
Una rete piatta è più veloce di una rete a isola perché i gateway in modalità isola eseguono traduzioni degli indirizzi, che comportano un costo in termini di prestazioni.
Nelle reti piatte il debug dei problemi dei cluster è più semplice perché tutto ciò che fa parte della rete ha un indirizzo IP univoco, il che consente di individuare più facilmente il punto in cui si verifica un problema. Ad esempio, gli IP dei pod non sono mascherati dietro l'indirizzo IP di un nodo, quindi è più facile determinare esattamente quale pod causa problemi. Allo stesso modo, gli IP dei client non sono oscurati in modalità flat come in modalità isola, cosa che aiuta anche a eseguire il debug.
Potresti non riuscire a utilizzare il modello di rete piatta se hai pochi indirizzi IP o se il tuo spazio IP è frammentato (ovvero se non disponi di grandi blocchi di indirizzi IP). In questo caso, una rete a isola è 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 al loro interno.