Kubernetes garantiert nicht, dass alles außerhalb eines Clusters mit dem Cluster kommunizieren kann, und verspricht nur, die folgenden Funktionen bereitzustellen:
Alle Pods in einem Cluster können direkt miteinander kommunizieren, ohne Network Address Translation (NAT) zu verwenden. Auch Pods, die sich auf verschiedenen Knoten befinden, können direkt miteinander kommunizieren.
Agents auf einem Knoten, wie System-Daemons oder ein kubelet, können mit allen Pods auf diesem Knoten kommunizieren.
Wenn also ein Netzwerk zwei Cluster hostet, wie unten dargestellt, stellt sich die Frage, wie Pods in Cluster 1 mit Pods in Cluster 2 kommunizieren. Und wie kommunizieren Clients oder Server außerhalb der Cluster, die im Diagramm mit "Other client" (Sonstige Client) und "Other server" (Anderer Server) gekennzeichnet sind, mit einem Pod innerhalb eines Clusters?
In diesem Dokument wird erläutert, wie ein Netzwerkmodell im flachen Modus und ein Netzwerkmodell im Inselmodus diese Fragen unterschiedlich beantworten.
Netzwerkmodell im flachen Modus
In einem vollständig integrierten Netzwerk bzw. einem Netzwerk im flachen Modus haben Pods in allen Clustern eindeutige IP-Adressen. Beispiel: Pod-A
in Cluster 1 hat eine IP-Adresse, die Sie nirgendwo anders in Cluster 1 oder Cluster 2 sehen. Ebenso hat Pod-G
in Cluster 2 eine in beiden Clustern eine eindeutige Adresse. Das bedeutet, dass Pods aus Cluster 1 direkt mit jedem der Pods in Cluster 2 kommunizieren können (vorausgesetzt, es gibt keine Firewalls oder anderen Richtlinien, die den Traffic blockieren würden). Für die Kommunikation zwischen Pods ist keine Gateway- oder Adressübersetzung erforderlich.
Ebenso können Clients und Server außerhalb eines Clusters direkt über die eindeutige IP-Adresse des Pods direkt mit einem Pod innerhalb eines Clusters kommunizieren, wenn zum Beispiel das Routing statisch in Netzwerkgeräten konfiguriert ist oder Border Gateway Protocol (BGP) von den Knoten verwendet wird, um anzuzeigen, dass sie Traffic für einen bestimmten IP-Bereich verarbeiten können.
In flachen Netzwerken ist die Kommunikation also einfach und direkt: Es gibt keine überlappenden IP-Adressen und Sie müssen keine Overlay-Netzwerke und kein NAT verwenden.
Netzwerkmodell im Inselmodus
Ein Netzwerkmodell im flachem Modus ist eine Option, wenn Sie den Vorteil eines großen IP-Adressbereichs haben und es sich leisten können, jedem Pod eine eindeutige IP-Adresse zuzuweisen. Wenn ein großer IP-Adressbereich für Sie jedoch nicht möglich ist, ist ein Netzwerkmodell im Inselmodus eine gute Wahl.
In einem Netzwerk im Inselmodus haben Knoten eindeutige IP-Adressen. Um jedoch mit den relativ wenigen IP-Adressen sparsam umzugehen, haben Pods keine eindeutigen Adressen über Cluster hinweg. Das verursacht keine Probleme, da Pods in einem Cluster nie direkt mit Pods in einem anderen Cluster kommunizieren. Wie das folgende Diagramm zeigt, gibt es stattdessen Gateways, die zwischen einem Pod in einem Cluster und einem Pod in einem anderen Cluster vermitteln.
Entsprechend werden Traffic von einem Client, der bei einem Cluster eingeht, und Traffic, der einen Cluster verlässt, von ähnlichen Gateways verarbeitet. Gateways können auf verschiedene Arten implementiert werden. Beispiele für Gateways sind NAT, virtuelle IP-Adressen (VIPs) und Proxys. Sie führen Übersetzungen von IP-Adressen durch, die dazu führen, dass Pod-IP-Adressen privat bleiben.
Beim Netzwerkmodell im Inselmodus können in jedem Cluster dieselben Pod-IP-Adressen verwendet werden. Das bedeutet, dass die Pod-IP-Adressen nicht clusterübergreifend eindeutig sein müssen. Wie das folgende Diagramm zeigt, können Sie in jedem Cluster dieselben Pod-IP-Adressen verwenden, da ein Pod in einem Cluster nie direkt mit einem Pod in einem anderen Cluster kommuniziert.
Ein großer Vorteil des Netzwerkmodells im Inselmodus besteht darin, dass Pod-IP-Adressen auf diese Weise wiederverwendet werden können.
Vor- und Nachteile der beiden Modelle
Im Folgenden sind einige Vor- und Nachteile der beiden Modelle aufgeführt:
Ein flaches Netzwerk ist schneller als ein Inselnetzwerk, da Gateways im Inselmodus Adressübersetzungen durchführen und diese Übersetzungen Leistungskosten verursachen.
Das Debugging von Clusterproblemen ist in flachen Netzwerken einfacher, da alles im Netzwerk eine eindeutige IP-Adresse hat. So lässt sich einfacher feststellen, wo genau ein Problem auftritt. Pod-IP-Adressen werden beispielsweise nicht hinter der IP-Adresse eines Knotens maskiert. So können Sie genau ermitteln, welcher Pod Probleme verursacht. Ebenso werden Client-IP-Adressen im flachen Modus nicht so wie im Inselmodus verschleiert. Dies hilft ebenfalls beim Debugging.
Sie können das flache Netzwerkmodell möglicherweise nicht verwenden, wenn Sie wenige IP-Adressen haben oder wenn Ihr IP-Bereich fragmentiert ist, d. h., wenn Sie keine großen IP-Adressblöcke haben. In diesem Fall ist ein Inselnetzwerk eine bessere Option.
Es ist wichtig zu beachten, dass die Netzwerkmodelle im flachen und im Inselmodus nur zwei der möglichen Netzwerkmodelle sind und dass es auch innerhalb dieser Modelle viele Varianten gibt.