Kubernetes non garantisce che qualsiasi elemento 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 alla Network Address Translation (NAT). Anche i pod che si trovano su nodi diversi possono comunicare direttamente tra loro.
Gli agenti su un nodo, come i daemon di sistema o un kubelet, possono comunicare con tutti i pod su quel nodo.
Pertanto, quando una rete ospita due cluster, come illustrato di seguito, una domanda da porsi è come fanno i pod nel cluster 1 a comunicare con i pod nel cluster 2? Allo stesso modo, come fanno i client o i server al di fuori dei cluster, contrassegnati come "Altro client" e "Altro server" nel diagramma, a comunicare con un pod all'interno di un cluster?
Questo documento spiega in che modo un modello di rete in modalità flat e un modello di rete in modalità isola rispondono a queste domande in modo diverso.
Modello di rete in modalità flat
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 da nessun'altra parte 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 uno qualsiasi dei pod del cluster 2 (supponendo che non ci siano firewall o altre policy che blocchino il traffico). Non è necessario alcun gateway o traduzione degli indirizzi per la comunicazione tra pod.
Allo stesso modo, i client e i server al di fuori di 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 staticamente nei dispositivi di rete o se i nodi utilizzano il protocollo BGP (Border Gateway Protocol) per annunciare che possono gestire il traffico per un determinato intervallo IP.
Pertanto, nelle reti flat, 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 hai il lusso di uno spazio di indirizzi IP di grandi dimensioni e puoi permetterti di assegnare un indirizzo IP univoco a ogni pod. Tuttavia, se uno spazio di indirizzi IP di grandi dimensioni non è un'opzione per te, un modello di rete in modalità isola è una buona scelta.
In una rete in modalità isola, i nodi hanno indirizzi IP univoci, ma, per risparmiare sugli 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. Al contrario, come mostra il seguente diagramma, esistono gateway che mediano tra un pod in un cluster e un pod in un altro cluster.
Allo stesso modo, il traffico (in entrata) da un client che entra in un cluster e il traffico (in uscita) che lascia un cluster vengono gestiti da gateway simili. I gateway possono essere implementati in vari modi. Ad esempio, NAT, indirizzi IP virtuali (VIP) e proxy sono alcuni esempi di gateway. Eseguono traduzioni degli indirizzi IP che hanno l'effetto di 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. Ovvero, gli indirizzi IP dei pod non devono essere univoci tra i cluster. Come suggerisce il seguente diagramma, 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.
Un vantaggio importante 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
Di seguito sono elencati alcuni vantaggi e svantaggi dei due modelli:
Una rete flat è più veloce di una rete isola perché i gateway in modalità isola eseguono traduzioni degli indirizzi e queste traduzioni comportano un costo in termini di prestazioni.
Il debug dei problemi del cluster è più semplice nelle reti flat perché ogni elemento della rete ha un indirizzo IP univoco ed è quindi più facile individuare 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 sta causando problemi. Allo stesso modo, gli IP dei client non sono oscurati in modalità flat come in modalità isola, il che aiuta anche con il debug.
Potresti non essere in grado di utilizzare il modello di rete flat se hai indirizzi IP scarsi o se il tuo spazio IP è frammentato (ovvero, se non hai grandi blocchi di indirizzi IP). In questo caso, una rete isola è un'opzione migliore.
È importante notare che i modelli di rete flat e isola sono solo due dei possibili modelli di rete e che esistono molte varianti anche all'interno di questi modelli.