Container-Apps für SR-IOV-fähige Netzwerkschnittstellen in OKE mit Multus CNI-Plug-in bereitstellen

Einführung

In diesem Tutorial erfahren Sie, wie Sie containerisierte Anwendungen auf virtuellen Instanz-Worker-Knoten in Oracle Cloud Infrastructure Kubernetes Engine (OKE) bereitstellen und erweiterte Netzwerkfunktionen nutzen. Insbesondere aktivieren wir Single Root-I/O-Virtualisierung (SR-IOV) für Containernetzwerkschnittstellen und konfigurieren das Multus CNI-Plug-in, um Multi-Homed-Netzwerke für Ihre Container zu aktivieren.

Durch die Kombination von SR-IOV mit Multus können Sie leistungsstarke Netzwerke mit geringer Latenz für spezialisierte Workloads wie KI, maschinelles Lernen und Echtzeitdatenverarbeitung erreichen. In diesem Tutorial werden Schritt-für-Schritt-Anweisungen zum Konfigurieren Ihrer OKE-Umgebung, zum Bereitstellen von Worker-Knoten mit SR-IOV-fähigen Schnittstellen und zum Verwenden von Multus CNI zum Verwalten mehrerer Netzwerkschnittstellen in Ihren Pods bereitgestellt. Egal, ob Sie eine Hochgeschwindigkeits-Paketverarbeitung anstreben oder Ihr Kubernetes-Netzwerk optimieren müssen, dieses Tutorial stattet Sie mit den Tools und dem Wissen aus, um loszulegen.

Hinweis:

image

Ziele

Aufgabe 1: OKE mit Bastion, Operator, drei VM-Worker-Knoten und dem Flannel-CNI-Plug-in bereitstellen

Stellen Sie sicher, dass OKE mit dem folgenden Setup bereitgestellt wird:

Dieses Setup wird im Tutorial hier beschrieben: Kubernetes-Cluster mit Terraform mit Oracle Cloud Infrastructure Kubernetes Engine bereitstellen.

Die folgende Abbildung zeigt einen visuellen Überblick über die Komponenten, mit denen wir in diesem Tutorial arbeiten werden.

image

Aufgabe 2: SR-IOV-(Hardware-Assisted-)Netzwerk auf jedem Worker-Knoten aktivieren

Hinweis: Die folgenden Schritte müssen auf allen Worker-Knoten ausgeführt werden, die Teil des OKE-Clusters sind.

Die folgende Abbildung zeigt einen visuellen Überblick über unsere Worker-Knoten im OKE-Cluster, mit denen wir in diesem Tutorial arbeiten werden.

image

SR-IOV auf der Instanz aktivieren

Aufgabe 3: Neues Subnetz für die SR-IOV-fähigen VNICs erstellen

Wir erstellen ein dediziertes Subnetz, das unsere SR-IOV-fähigen Schnittstellen verwenden.

Aufgabe 3.1: Sicherheitsliste erstellen

Da wir bereits Sicherheitslisten für die anderen Subnetze verwenden, aber auch eine dedizierte Sicherheitsliste für das neu erstellte SR-IOV-Subnetz benötigen.

Aufgabe 3.2: Subnetz erstellen

Aufgabe 4: Zweiten VNIC-Anhang hinzufügen

Die folgende Abbildung zeigt einen visuellen Überblick darüber, wie die Worker-Knoten eine einzelne VNIC aufweisen, die mit dem Subnetz der Worker-Knoten verbunden ist, bevor eine zweite VNIC hinzugefügt wird.

image

Bevor Sie den Worker-Knoten einen zweiten VNIC-Anhang hinzufügen, erstellen Sie eine Netzwerksicherheitsgruppe.

Aufgabe 4.1: Netzwerksicherheitsgruppe (NSG) erstellen

Wir verwenden NSG bereits für die anderen VNICs, aber wir benötigen auch eine dedizierte NSG für die neu erstellte VNIC, die wir einer vorhandenen virtuellen Instanz hinzufügen, die Teil des OKE-Clusters ist und als Kubernetes-Worker-Knoten fungiert. Diese Schnittstelle ist eine VNIC, bei der SR-IOV aktiviert ist.

Aufgabe 4.2: VNIC hinzufügen

Aufgabe 5: IP-Adresse der neuen zweiten VNIC mit einem Standardgateway zuweisen

Nachdem die zweite VNIC in Aufgabe 4 erstellt und angehängt wurde, müssen wir ihr eine IP-Adresse zuweisen. Wenn Sie eine zweite Schnittstelle zu einer Instanz hinzufügen, können Sie sie demselben Subnetz wie die erste Schnittstelle zuweisen, oder Sie können ein neues Subnetz auswählen.

DHCP ist für die zweite Schnittstelle nicht aktiviert, daher muss die IP-Adresse manuell zugewiesen werden.

Es gibt verschiedene Methoden, die IP-Adresse für die zweite Schnittstelle zuzuweisen.

Für alle Worker-Knoten haben wir der sekundären vNIC (ens5) eine IP-Adresse zugewiesen. Wir haben Methode 3 verwendet, um der sekundären vNIC eine IP-Adresse zuzuweisen (ens5). Weitere Informationen zum Zuweisen einer IP-Adresse zur zweiten VNIC finden Sie unter IP-Adresse einer zweiten Schnittstelle auf einer Oracle Linux-Instanz zuweisen.

Nachdem die IP-Adresse einer VNIC zugewiesen wurde, müssen wir prüfen, ob die IP-Adresse der zweiten VNICs korrekt konfiguriert ist. Außerdem können wir prüfen, ob SR-IOV auf allen Knotenpool-Worker-Knoten aktiviert ist.

Unser OKE-Cluster besteht aus:

Knotenpool  
NP1 1 x Worker-Knoten
NP2 3 x Worker-Knoten

Wir prüfen alle Worker-Knoten in allen Knotenpools.

Aufgabe 5.1: Alle Knoten in Knotenpool 1 prüfen (np1)

Aufgabe 5.2: Alle Knoten in Knotenpool 2 prüfen (np2)

Aufgabe 6: Meta-Plugin-CNI (Multus CNI) auf Worker-Knoten installieren

Multus CNI ist ein Kubernetes-Plug-in für die Containernetzwerkschnittstelle (CNI), mit dem Sie mehrere Netzwerkschnittstellen an einen Pod anhängen können.

Wie Multus CNI funktioniert

Warum wir Multus CNI brauchen

Aufgabe 6.1: Multus CNI mit der Thin-Installationsmethode installieren

Funktionsweise des Multus-Daemon-Sets

Aufgabe 6.2: Multus-Installation validieren

Aufgabe 7: Netzwerkschnittstellen an Pods anhängen

In dieser Aufgabe mappen oder anhängen Sie eine Containerschnittstelle an diese VNIC an.

Um zusätzliche Schnittstellen an Pods anzuschließen, benötigen wir eine Konfiguration, damit die Schnittstelle angeschlossen werden kann.

Es gibt mehrere CNI-Plugins, die neben Multus verwendet werden können, um dies zu erreichen. Weitere Informationen finden Sie unter Überblick über Plugins.

Das folgende Beispiel zeigt NetworkAttachmentDefinition-Objekte, mit denen die sekundäre ens5-Schnittstelle konfiguriert wird, die den Knoten hinzugefügt wurde.

Aufgabe 7.1: Netzwerkanhangsdefinition erstellen

Mit NetworkAttachmentDefinition wird der Netzwerkanhang eingerichtet, z.B. die sekundäre Schnittstelle für den Pod.

Es gibt zwei Möglichkeiten, die NetworkAttachmentDefinition zu konfigurieren:

Hinweis: In diesem Tutorial wird die Methode mit der CNI-Konfigurationsdatei verwendet.

Wir haben 4 x Worker-Knoten und jeder Worker-Knoten hat eine zweite VNIC, die wir einer Schnittstelle auf einem Container (Pod) zuordnen.

Aufgabe 7.2: Pods mit angehängtem NetworkDefinitionAttachment erstellen

In dieser Aufgabe verknüpfen wir die NetworkAttachmentDefinitions mit einem tatsächlichen Container oder Pod.

In der folgenden Tabelle haben wir ein Mapping für den Pod erstellt, den wir auf welchem Worker-Knoten hosten möchten.

Worker-Knoten-IP (primär) ens5 name Podname beendet
10.0.112.134 10.0.3.30/27 sriov-vnic-1 testpod1 JA
10.0.66.97 10.0.3.15/27 sriov-vnic-2 testpod2 JA
10.0.73.242 10.0.3.14/27 sriov-vnic-3 testpod3 JA
10.0.89.50 10.0.3.16/27 sriov-vnic-4 testpod4 JA

Aufgabe 7.3: Pods mit Knotenaffinität erstellen

Standardmäßig entscheidet Kubernetes, wo die Pods platziert werden (Worker-Knoten). In diesem Beispiel ist dies nicht möglich, weil eine NetworkAttachmentDefinition an eine IP-Adresse gebunden ist und diese IP-Adresse an eine VNIC gebunden ist und diese VNIC an einen bestimmten Worker-Knoten gebunden ist. Daher müssen wir sicherstellen, dass die von uns erstellten Pods auf dem gewünschten Worker-Knoten enden. Dies ist erforderlich, wenn wir die NetworkAttachmentDefinition an einen Pod anhängen.

Wenn wir dies nicht tun, kann es passieren, dass ein Pod an einem anderen Ort landet, an dem die IP-Adresse für den Pod verfügbar ist. Daher kann der Pod nicht über die SR-IOV-fähige Schnittstelle kommunizieren.

Aufgabe 7.4: IP-Adresse in den Testpods prüfen

Aufgabe 7.5: IP-Adresse auf den Worker-Knoten prüfen

Aufgabe 8: Pingtests zwischen mehreren Pods ausführen

Alle Pods verfügen über eine IP-Adresse aus dem OCI-Subnetz, an das die SR-IOV-fähigen VNICs angehängt sind. Wir können einige Ping-Tests durchführen, um zu prüfen, ob die Netzwerkkonnektivität ordnungsgemäß funktioniert.

Hinweis: In diesem Beispiel verwenden wir testpod1, um alle anderen IP-Adressen der Testpods net1 zu pingen.

Aufgabe 9: (Optional) Pods mit mehreren Schnittstellen bereitstellen

Bis jetzt haben wir nur eine VNIC vorbereitet (die SR-IOV unterstützt) und diese VNIC in einen Pod verschoben. Wir haben dies für vier verschiedene Testpods getan.

Was nun, wenn wir weitere VNICs zu einem bestimmten Pod hinzufügen oder verschieben möchten? Sie müssen die folgenden Schritte ausführen:

In dieser Aufgabe finden Sie ein Beispiel, in dem wir ein zusätzliches Subnetz (VNIC) erstellen, die IP-Adresse (NetworkAttachmentDefinition) zuweisen und diese der YAML-Datei für die Poderstellung für testpod1 hinzufügen.

Aufgabe 10: Alle Pod-Deployments entfernen und NetworkAttachmentDefinitions

Wenn Sie neu beginnen oder die Container mit NetworkAttachmentDefinitions bereinigen möchten, führen Sie die folgenden Schritte aus:

Bestätigungen

Weitere Lernressourcen

Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.