Kubernetes non garantisce che tutto al di fuori di un cluster possa comunicare con il cluster e promette solo di fornire la seguente funzionalità:
Tutti i pod in un cluster possono comunicare direttamente tra loro senza dover ricorrere a Network Address Translation (NAT). Anche i pod 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 tale nodo.
Quindi, quando una rete ospita due cluster, come mostrato di seguito, una domanda da porre è come comunicano i pod nel cluster 1 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à piatta
In una rete completamente integrata o in modalità piatta, 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. Analogamente, Pod-G
nel cluster 2 ha un indirizzo univoco in entrambi i cluster. Ciò significa che, supponendo che non ci siano firewall o altri criteri che bloccano il traffico, i pod del cluster 1 possono comunicare direttamente con qualsiasi pod nel cluster 2, senza bisogno di gateway o traduzione.
Analogamente, 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 il protocollo Border Gateway Protocol (BGP) viene utilizzato dai nodi per pubblicizzare la gestione del 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 sovrapposte o NAT.
Modello di rete in modalità isola
Un modello di rete a schermo piatto è un'opzione se hai il lusso di un grande spazio di indirizzi IP e puoi permetterti di assegnare un indirizzo IP univoco a ogni pod. Tuttavia, se non è possibile configurare uno spazio di indirizzi IP di grandi dimensioni, un modello di rete in modalità isolata è una buona 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 su più cluster. Questo non crea problemi perché i pod in un cluster non comunicano mai direttamente con i pod in un altro. Come mostra invece il diagramma seguente, esistono gateway che mediano tra un pod in un cluster e un pod in un altro.
Analogamente, il traffico (in entrata) da un client che arriva 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. Ad esempio, gli indirizzi IP virtuali (VIP) e i proxy sono alcuni esempi di gateway. Esegue traduzioni di 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, anche se non devono essere univoci su tutti i cluster. Come suggerito dal 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.
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
Di seguito sono elencati alcuni dei vantaggi e degli svantaggi dei due modelli:
Una rete piatta è più veloce di una rete su un'isola perché i gateway in modalità isola eseguono le traduzioni degli indirizzi e queste traduzioni comportano un costo per le prestazioni.
Il debug dei problemi del cluster è più semplice nelle reti piatte perché tutto ciò che è presente nella rete ha un indirizzo IP univoco, quindi è più facile individuare dove si verifica un problema. Ad esempio, gli IP dei pod non sono mascherati dietro l'indirizzo IP di un nodo, quindi è più semplice determinare esattamente quale pod causa problemi. Analogamente, gli IP client non sono oscurati in modalità piatta come nel caso della modalità isola e questo è utile anche per il debug.
Potresti non riuscire a utilizzare il modello di rete semplice se gli indirizzi IP sono insufficienti o se lo spazio IP è frammentato (ovvero se non hai grandi blocchi di indirizzi IP). In tal caso, la rete dell'isola è un'opzione migliore.
È importante notare che i modelli di rete piatta e a isola sono solo due dei possibili modelli di rete e ci sono molte varianti anche all'interno di questi modelli.