Blog

Container Network Interface (CNI) in Kubernetes: Überblick mit Beispielen

Bild von Boyan Kirov
Bojan Kirow
DevOps- und Cloud-Ingenieur
13.07.2023
Lesezeit: 4 Minuten.
Zuletzt aktualisiert am: 18.09.2025

Inhaltsübersicht

Das Container Network Interface (CNI) spielt eine entscheidende Rolle bei der Verwaltung der Netzwerkfunktionen in Kubernetes-Clustern. Als wesentlicher Bestandteil des Kubernetes-Ökosystems ermöglicht CNI die nahtlose Kommunikation und Konnektivität zwischen Containern und externen Netzwerken. In diesem Artikel werden wir CNI näher beleuchten, seine Rolle in Kubernetes diskutieren und anhand von Beispielen aus der Praxis zeigen, wie es eingesetzt werden kann.

CNI verstehen

Die Interaktion von Netzwerk-Plugins mit Container-Laufzeiten ist im offenen Standard Container Network Interface (CNI) beschrieben. Es dient als Brücke zwischen der Container-Laufzeit und den Netzwerk-Plugins und ermöglicht die dynamische Konfiguration des Netzwerks für Kubernetes-Pods. CNI-Plugins übernehmen Aufgaben wie die Zuweisung von IP-Adressen, die Erstellung von Netzwerkschnittstellen und die Einrichtung von Netzwerkrouten für Container.

CNI-Architektur

CNI arbeitet mit einer einfachen Plugin-basierten Architektur. Wenn ein Pod in Kubernetes erstellt wird, ruft die Container-Laufzeitumgebung (z. B. Docker) die CNI-Plugins auf, um die Netzwerkumgebung einzurichten. Die Plugins können in verschiedenen Programmiersprachen geschrieben werden und kommunizieren mit der Container-Laufzeitumgebung über die Standardein- und -ausgabe. Sie nutzen den Linux-Networking-Stack, um das Netzwerk für Container zu konfigurieren.

Wie wird CNI eingeführt?

Um CNI besser zu verstehen, betrachten wir ein Beispiel für einen Kubernetes-Cluster mit mehreren Pods. Nehmen wir an, wir möchten die Kommunikation zwischen zwei Pods, A und B, erleichtern.

Die Container-Laufzeit fordert die Einrichtung des Netzwerks an: Wenn Pod A erstellt wird, ruft die Container-Laufzeit das konfigurierte CNI-Plugin auf, um das Netzwerk für Pod A einzurichten. Das CNI-Plugin erhält Informationen über die Netzwerkanforderungen des Pods und weist dem Container von Pod A eine IP-Adresse zu.

CNI-Plugin richtet Netzwerkumgebung ein: Das CNI-Plugin konfiguriert eine Netzwerkschnittstelle im Container von Pod A mit der zugewiesenen IP-Adresse. Es richtet auch die erforderlichen Routing-Regeln und Netzwerkrichtlinien ein.

Kommunikation mit Pod B: Wenn Pod B erstellt wird, ruft die Container-Laufzeit das CNI-Plugin auf, das dem Container von Pod B eine IP-Adresse zuweist und die erforderliche Netzwerkumgebung einrichtet.

Netzwerkkonnektivität: Mit den von den CNI-Plugins zugewiesenen Netzwerkschnittstellen und IP-Adressen können die Pods A und B über ihre jeweiligen IP-Adressen kommunizieren. Diese Kommunikation kann je nach Netzwerkkonfiguration innerhalb des Clusters oder mit externen Netzwerken erfolgen.

CNI-Plugins: Es steht eine breite Palette von CNI-Plugins zur Verfügung, um unterschiedliche Netzwerkanforderungen zu erfüllen. Einige beliebte Beispiele sind Calico, Flannel, Weave und Canal. Diese Plugins bieten Funktionen wie Netzwerkisolierung, Sicherheitsrichtlinien, Lastausgleich und Integration mit externen Netzwerkressourcen.

CNI in Aktion: Wenn Sie zum Beispiel CNI in einem Kubernetes-Cluster mit dem Calico-Plugin implementieren, müssen Sie Folgendes tun:

  • Calico-Plugin installieren: Der erste Schritt besteht darin, das Calico CNI-Plugin in Ihrem Kubernetes-Cluster zu installieren. Dies kann durch Anwendung der entsprechenden Manifestdateien oder mithilfe von Paketmanagern wie Helm erfolgen.
  • Calico-Netzwerke konfigurieren: Konfigurieren Sie Calico nach der Installation so, dass es Ihre Netzwerkanforderungen erfüllt. Dazu gehören die Definition von Netzwerkrichtlinien, IP-Pool-Zuweisungen und alle erforderlichen Sicherheitskonfigurationen.
  • Pods erstellen: Erstellen Sie nun Pods innerhalb Ihres Clusters. Das in Calico integrierte CNI-Plugin weist automatisch IP-Adressen zu, richtet Netzwerkschnittstellen ein und stellt die Konnektivität zwischen den Pods her.
  • Überprüfen Sie die Konnektivität: Sie können die Netzwerkkonnektivität überprüfen, indem Sie zwischen den Pods über die ihnen zugewiesenen IP-Adressen kommunizieren. Außerdem können Sie die Konnektivität mit externen Netzwerken testen, sofern diese konfiguriert sind.

 Ein wichtiger Bestandteil von Kubernetes ist das Container Network Interface (CNI), das eine nahtlose Vernetzung von Containern innerhalb eines Clusters ermöglicht. Mit seiner Plugin-basierten Architektur bietet CNI einen flexiblen und erweiterbaren Ansatz zur Verwaltung von Netzwerkanforderungen. 

Installation von Calico CNI in einem Kubernetes-Cluster

Installation von Calico CNI in einem Kubernetes-Cluster

Die Installation von Calico CNI in einem Kubernetes-Cluster ist ein unkomplizierter Prozess. Die wichtigsten Schritte bei der Installation von Calico sind: 

  1. Richten Sie einen Kubernetes-Cluster ein: Stellen Sie sicher, dass Ihr Kubernetes-Cluster betriebsbereit ist und läuft.
  1. Calico YAML-Manifeste herunterladen: Calico stellt YAML-Manifeste zur Verfügung, die die notwendigen Ressourcen für die Installation definieren.
  1. Konfiguration modifizieren (optional): Bei Bedarf können Sie die Konfiguration im Calico-YAML-Manifest ändern, um sie an Ihre Netzwerkanforderungen anzupassen. Öffnen Sie die Datei calico.yaml mit einem Texteditor und nehmen Sie die erforderlichen Änderungen vor.
  1. Calico-Manifeste anwenden: Wenden Sie die Calico-YAML-Manifeste mit dem folgenden Befehl auf Ihren Kubernetes-Cluster an:
kubectl apply -f calico.yaml

Mit diesem Befehl werden die Calico-Komponenten bereitgestellt, einschließlich der erforderlichen DaemonSets, ConfigMaps und RBAC-Rollen.

  1. Überprüfen Sie die Installation: Um sicherzustellen, dass Calico korrekt installiert ist, verwenden Sie den folgenden Befehl, um den Status der Calico-Pods zu überprüfen: 
kubectl get pods --namespace=kube-system --selector=k8s-app=calico-node

Sie sollten sehen, dass die Calico-Pods laufen und bereit sind.

  1. Überprüfen Sie die Cluster-Vernetzung: Überprüfen Sie, ob die Clustervernetzung ordnungsgemäß funktioniert. Überprüfen Sie den Netzwerkstatus des Clusters, indem Sie den folgenden Befehl ausführen:
kubectl get clusterinfo

Dieser Befehl zeigt den IP-Adressbereich des Clusters, das Pod-Subnetz und andere netzwerkbezogene Details an.

  1. Testen Sie die Netzwerkkonnektivität: Erstellen und verteilen Sie einen Beispiel-Pod in Ihrem Cluster und testen Sie die Netzwerkkonnektivität zwischen den Pods. Sie können den folgenden Befehl verwenden, um einen Beispiel-Pod zu erstellen:
kubectl run test-pod --image=nginx --restart=Never --rm -it – sh

Sobald Sie sich im Pod befinden, können Sie Tools wie ping oder curl verwenden, um die Konnektivität mit anderen Pods zu überprüfen.

Das war's! Sie haben Calico CNI erfolgreich in Ihrem Kubernetes-Cluster installiert. Calico kümmert sich nun um die Vernetzung und stellt die erforderlichen Netzwerkrichtlinien und Konnektivität zwischen Ihren Pods bereit.

Zusammenfassend

Darüber hinaus bietet CNI eine flexible und anpassungsfähige Lösung, wenn es um die Verwaltung von Netzwerkanforderungen geht. Außerdem helfen die Plugins bei der Handhabung von Aktivitäten wie der Zuweisung von IP-Adressen und der Konfiguration von Netzwerkrouten für Container. Um jedoch mit der Container-Laufzeit zu interagieren und eine nahtlose Verbindung mit externen Netzwerken herzustellen, müssen Sie einige notwendige Regeln und Anforderungen berücksichtigen.

Entdecken Sie die Dienstleistungen von ITGix und erfahren Sie mehr über unser Know-how.

Eine Antwort hinterlassen

Newsletter für Tech-Experten

Signal, kein Rauschen –

direkt in Ihren Posteingang.

Schließen Sie sich mehr als 12.000 Ingenieuren und Führungskräften aus der Wirtschaft an, die Praxisberichte zu SRE, DevOps und Cloud-nativer Zuverlässigkeit erhalten.

Tech-Blogs mit tiefgehenden Einblicken und Fallstudien
Neue Technologien, sorgfältig ausgewählt

Ihre geschäftliche E-Mail-Adresse

Wir gehen respektvoll mit Ihrem Posteingang um. Lesen Sie unsere Datenschutzerklärung.

Mehr Beiträge

Die sichere Verwaltung von Geheimnissen in Kubernetes stellt eine entscheidende Herausforderung für moderne Cloud-native Umgebungen dar. Anmeldedaten für Anwendungen, Zertifikate, private Schlüssel und Passwörter müssen auf sichere und nachverfolgbare Weise verwaltet werden, ...
Lesen
Einleitung In ereignisgesteuerten Kubernetes-Architekturen spiegeln die CPU- und Speicherauslastung oft nicht die tatsächliche Systemauslastung wider. Ein Worker-Pod kann aus CPU-Sicht im Leerlauf sein, während Tausende von Nachrichten...
Lesen
Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.