Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Passen Sie virtuelle Netzwerke für Pod-Bereitstellungen, Services und Namespaces an

ZUSAMMENFASSUNG Ab Version 23.1 unterstützt Juniper Cloud-native Contrail Networking (CN2) die Möglichkeit, ein benutzerdefiniertes Standardnetzwerk für Namespaces, Bereitstellungen und Services anzuwenden. Diese Funktion unterstützt auch Umgebungen, in denen Multus CNI aktiviert ist. Mit Multus als CNI Ihrer CN2-Umgebung können Sie Pods mit mehreren Schnittstellen für unterschiedliche Anwendungsfälle bereitstellen.

Benutzerdefiniertes Namespace-Netzwerk – Übersicht

In herkömmlichen Kubernetes ist das Standard-Pod-Netzwerk ein einzelner CIDR, der unabhängig vom Namespace von allen Pods im Cluster verwendet wird. Dieser Ansatz ermöglicht keine Segmentierung der Netzwerkebene zwischen Pods, da Kubernetes IPs von einem gemeinsam genutzten CIDR zuweist. CN2 behebt diesen Nachteil mit isolierten Namespaces. Isolierte CN2-Namespaces ermöglichen Kubernetes die Erstellung benutzerdefinierter Standard-Namespace-Netzwerke auf Namespace-Basis. Das bedeutet, dass neue Pods und Services, wenn Sie einen Deployment in einem Namespace mit einem benutzerdefinierten Namespace-Netzwerk konfigurieren, das benutzerdefinierte Netzwerk innerhalb eines einzelnen isolierten Namespaces verwenden. Isolierte Namespaces sorgen für eine Netzwerkisolierung zwischen Pods und Services, ohne dass eine Kubernetes-Netzwerkrichtlinie erforderlich ist.

CN2 verbessert diese Funktion, indem Kubernetes die Erstellung von Pods ermöglicht, die benutzerdefinierte Namespace-Netzwerke auf Pod-Basis verwenden. Benutzerdefinierte Namespace-Netzwerke bieten eigene VirtualNetworks (VNs) und Subnets. CN2 weist Pod-IPs basierend auf den Subnet-Parametern eines bestimmten benutzerdefinierten Namespace-Netzwerks zu. Mit anderen Worten, Sie können Pods mit ihren eigenen Netzwerken in einem bestimmten Namespace erstellen. Das bedeutet, dass CN2 netzwerkisolierung auf Namespace- und Podebene unterstützt.

Anwenden eines benutzerdefinierten Namespace-Netzwerks auf einen Namespace

Sie können ein benutzerdefiniertes Standard-Namespace-Netzwerk pro Namespace angeben. Festlegen eines benutzerdefinierten Namespace-Netzwerks pro Namespace, und alle Pods und Services, die in diesem Namespace erstellt werden, verwenden dieses Netzwerk als Pod oder Servicenetzwerk. Die Namespace Anmerkung net.juniper.contrail.podnetwork: network-namespace/network-name bezeichnet das gewünschte Netzwerk als benutzerdefiniertes Namespace-Netzwerk.

Die folgende YAML zeigt ein Beispiel für einen Namespace mit einer benutzerdefinierten Namespace-Netzwerkanmerkung.

Hinweis:

Beim Erstellen des Namespaces muss die Anmerkung eines Namespaces vorhanden sein. Sie können die Anmerkung in einem Namespace nicht aktualisieren, um das Netzwerk zu ändern. Sie müssen den Namespace neu erstellen, um sein Netzwerk zu ändern. Wenn kubemanager ein Update der Benutzerdefinierten Namespace-Netzwerkanmerkung in einem Namespace erkannt wird, wird dieser Namespace und jeder in diesem Namespace erstellte Pod markiert, kubemanager nachdem das Update nicht gestartet wird. Durch die Revertierung des Updates wird die Flagge entfernt und die Pods werden normal gestartet.

Anwenden eines benutzerdefinierten Servicenetzwerks auf einen Service

Sie können ein benutzerdefiniertes Standardnetzwerk für Services in einem annotations Service Objekt angeben. Infolgedessen kann der Service Pods auswählen, die das benutzerdefinierte Servicenetzwerk verwenden. Services, die Pods mit einem benutzerdefinierten Netzwerk auswählen, werden von anderen Netzwerken isoliert. Das Anmerkungsformat ist: network-namespace/network-name.

Im Folgenden ist ein Beispiel für ein Service benutzerdefiniertes Servicenetzwerk.

Festlegen eines virtuellen Netzwerks als benutzerdefiniertes Standard-Pod-Netzwerk

Sie können einen VN als benutzerdefiniertes Standard-Pod-Netzwerk festlegen. Wenn Sie ein VirtualNetwork Objekt manuell erstellen, müssen Sie das Feld "podNetwork: true" in der Spezifikation des VirtualNetwork festlegen. Dieses Feld bezeichnet den neuen VN als benutzerdefiniertes Standard-Pod-Netzwerk. CN2 weist IPs Pods aus diesem Netzwerk zu.

Im Folgenden wird ein Beispiel für ein VirtualNetwork als benutzerdefiniertes Standard-Pod-Netzwerk bezeichnet.

Verwenden einer NAD zum Erstellen eines benutzerdefinierten Standard-Pod-Netzwerks

Installieren Sie einen Network Attachment Definiton (NAD) mit podNetwork: true dem Satz an der juniper.net/networks Anmerkung, um ein benutzerdefiniertes Standard-Pod-Netzwerk zu erstellen. Nachdem Sie diese NAD erstellt haben, erstellt der NAD-Controller automatisch ein VN und legt das Feld "podNetwork: true" während der VirtualNetwork Erstellung fest.

Im Folgenden ist ein Beispiel für eine NAD, die als benutzerdefiniertes Standard-Pod-Netzwerk bezeichnet wurde.

  • Hinweis:

    Sie müssen keine NAD-Anmerkung für Pods innerhalb eines Namespace angeben, wenn dieser Namespace dasselbe Netzwerk wie die primäre Schnittstelle (eth0) verwendet. Mit anderen Worten, da der Namespace ein Netzwerk mit einer Anmerkung angibt, müssen Pods in diesem Namespace nicht dasselbe Netzwerk angeben.

Bereitstellung eines benutzerdefinierten Pod-Netzwerks pro Pod

Sie können auch ein benutzerdefiniertes Standard-Pod-Netzwerk pro Pod angeben. Um ein benutzerdefiniertes Podnetzwerk pro Pod festzulegen, müssen Sie das folgende Schlüsselwertpaar in annotations einem Pod angeben: "net.juniper.contrail.podnetwork": network-namespace/network-name. Diese Funktion bietet Pod-Isolierung, da Pods, die ein benutzerdefiniertes Pod-Netzwerk verwenden, von anderen Netzwerken isoliert sind.

Das folgende Beispiel zeigt einen Namespace VirtualNetworkund einen Pod mit definierten benutzerdefinierten Standardnetzwerken.

Beachten Sie den folgenden Pod annotations:

Sie definieren ein benutzerdefiniertes Pod-Netzwerk in den Anmerkungen sowohl des Pods (pod-level-cpn-pod) als auch des Namespaces (cpn-intra-network-test-vn). Als Teil der Version 23.1 müssen Sie einen Pod so konfigurieren, dass ein benutzerdefiniertes Pod-Netzwerk auf annotations Pod-Ebene verwendet wird. Wenn Sie eine Anmerkung sowohl auf Pod- als auch auf Namespaceebene angeben, hat die Anmerkung auf Podebene Priorität.

Benutzerdefinierte Standard-Namespace-Netzwerkinteraktionen

In den folgenden Abschnitten finden Sie Informationen zu häufigen netzwerkspezifischen Namespace-Interaktionen.

Multi-NIC-Pod

Ein Pod mit einem benutzerdefinierten Standard-Namespace-Netzwerk kann immer noch mehrere Schnittstellen enthalten. Die folgende YAML ist ein Beispiel für einen NetworkSelectionElement Pod mit einem benutzerdefinierten Netzwerk und mehreren Schnittstellen.

Ein Pod mit den oben definierten Anmerkungen würde eth0 von custom-podnet-vn, eth1 von vn1und eth2 von vn2. Sie können auch einen Namespace mit einem benutzerdefinierten Namespace-Netzwerk und mehreren Schnittstellen erstellen. Im folgenden YAML wird die obige Konfiguration auf Namespaceebene repliziert.