GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ein kurzer Überblick über das Container Network Interface (CNI) in Kubernetes

Wenn Sie mit Kubernetes (K8s) gearbeitet und versucht haben, einige seiner inneren Abläufe zu lernen, entweder bei der Arbeit oder in einem Schulungskurs, müssen Sie etwas über Container Network Interface (CNI) gelernt haben. Dieser Artikel entmystifiziert, was CNI bedeutet und tut.

Was ist CNI?

Ein CNI-Plug-in ist dafür verantwortlich, eine Netzwerkschnittstelle in den Container-Netzwerk-Namespace einzufügen (z. B. ein Ende eines virtuellen Ethernet-Paars (veth)) und alle erforderlichen Änderungen am Host vorzunehmen (z. B. das andere Ende des veth in eine Bridge einzufügen ). Anschließend weist es der Schnittstelle eine IP-Adresse zu und richtet die Routen im Einklang mit dem IP-Adressverwaltungsabschnitt ein, indem es das entsprechende IP-Adressverwaltungs-(IPAM)-Plug-in aufruft.

[Das könnte Ihnen auch gefallen: Ein Leitfaden für Systemadministratoren zu grundlegenden Kubernetes-Komponenten]

Wo passt CNI rein?

CNI wird von Containerlaufzeiten wie Kubernetes (wie unten gezeigt) sowie Podman, CRI-O, Mesos und anderen verwendet.

Der Container/Pod hat zunächst keine Netzwerkschnittstelle. Die Containerlaufzeit ruft das CNI-Plugin mit Verben wie ADD auf , DEL , PRÜFEN usw. ADD erstellt eine neue Netzwerkschnittstelle für den Container, und Details darüber, was hinzugefügt werden soll, werden über JSON-Payload an CNI übergeben.

Woraus besteht das CNI-Projekt?

  1. CNI-Spezifikationen – Dokumentiert das Konfigurationsformat, wenn Sie das CNI-Plug-in aufrufen, was es mit diesen Informationen tun soll und das Ergebnis, das das Plug-in zurückgeben soll.
  2. Eine Reihe von Referenz- und Beispiel-Plugins - Diese können Ihnen helfen zu verstehen, wie man ein neues Plugin schreibt oder wie vorhandene Plugins funktionieren könnten. Sie sind Cloud-agnostisch. Dies sind Plugins mit eingeschränkter Funktionalität und dienen nur als Referenz.

Die CNI-Spezifikationen

  • Herstellerneutrale Spezifikationen
  • Verwendet von Mesos, CloudFoundry, Podman, CRI-O
  • Definiert den grundlegenden Ausführungsablauf und das Konfigurationsformat
  • Versuchen Sie, die Dinge einfach und abwärtskompatibel zu halten

Ausführungsablauf der CNI-Plugins

  1. Wenn die Container-Laufzeit erwartet, Netzwerkoperationen auf einem Container auszuführen, ruft sie (wie das Kubelet im Fall von K8s) das CNI-Plugin mit dem gewünschten Befehl auf.
  2. Die Container-Laufzeit stellt dem Plug-in auch zugehörige Netzwerkkonfigurations- und containerspezifische Daten bereit.
  3. Das CNI-Plugin führt die erforderlichen Operationen durch und meldet das Ergebnis.

CNI wird zweimal von K8s (kubelet) aufgerufen, um loopback einzurichten und eth0 Schnittstellen für einen Pod.

Hinweis :CNI-Plugins sind ausführbar und unterstützen ADD-, DEL-, CHECK- und VERSION-Befehle, wie oben beschrieben.

Warum gibt es mehrere Plugins?

CNI stellt die Spezifikationen für verschiedene Plugins bereit. Und wie Sie wissen, ist die Vernetzung ein komplexes Thema mit einer Vielzahl von Benutzeranforderungen. Daher gibt es mehrere CNI-Plugins, die Dinge unterschiedlich machen, um verschiedene Anwendungsfälle zu erfüllen.

[ Lernen Sie die Grundlagen der Verwendung von Kubernetes in diesem kostenlosen Spickzettel. ] 

Abschluss

Es gibt viele Aspekte der Container-Orchestrierung und -Verwaltung mit Kubernetes. Sie haben gerade etwas über die Verwendung von CNI für Netzwerke in Kubernetes gelernt. Weitere Informationen finden Sie auf der CNI-Projektseite auf GitHub.


Linux
  1. Erlauben Sie das X-Protokoll in Ihrem Netzwerk?

  2. Wie starte ich eine Netzwerkschnittstelle neu?

  3. Ifconfig:7 Beispiele zum Konfigurieren der Netzwerkschnittstelle

  4. Grundlegendes zur Konfigurationsdatei der Netzwerkschnittstelle /etc/sysconfig/network-scripts/ifcfg-eth#

  5. Ubuntu aktiviert und deaktiviert die Netzwerkschnittstelle

Ansible vs. Kubernetes:Die Unterschiede verstehen

Überblick über die Wireshark-Benutzeroberfläche (GUI)

3 Möglichkeiten, eine Netzwerkschnittstelle in Linux zu konfigurieren

Eine Einführung in die Containerregistrierung von Quay

Netzwerkkonfiguration

OpenShift vs. Kubernetes – Vergleich der Container-Bereitstellungsplattform