Startseite topics Kubernetes-Networking Was ist Kubernetes-Networking?
IBM Cloud Kubernetes Service kennenlernen
Verschiedene Formen, die miteinander vernetzt sind

Veröffentlicht: 21. November 2023
Mitwirkende: Stephanie Susnjara, Ian Smalley

Was ist Kubernetes-Networking?

Kubernetes-Networking bietet die Netzwerkinfrastruktur für Kommunikation, Skalierbarkeit, Sicherheit und externen Zugriff für containerisierte Anwendungen. Das Netzwerk ist komplex und umfasst die Kommunikation zwischen allen wichtigen Komponenten, die sich innerhalb (z. B. Pods, Knoten, Container, Services) und außerhalb (z. B. externer Traffic) eines Kubernetes-Clusters befinden.

Diese Komponenten verwenden vier unterschiedliche Netzwerkmethoden zur Kommunikation:

1. Container-to-Container-Networking

2. Pod-to-Pod-Networking

3. Pod-to-Service-Networking

4. External-to-service-Networking

Automatisierung der anwendungsgesteuerten Containerelastizität

Für Plattform- und DevOps-Teams, die die Markteinführung beschleunigen und gleichzeitig die Anwendungsleistung sicherstellen möchten.

Ähnliche Inhalte

IBM Newsletter abonnieren

Was ist Kubernetes?

Der Name Kubernetes  stammt aus Griechenland und bedeutet Steuermann oder Pilot. Kubernetes basiert auf Borg, der internen Container-Orchestrierungsplattform von Google, und wurde 2014 als Open-Source-Tool der Öffentlichkeit vorgestellt. Im selben Jahr spendete Google Kubernetes an die Cloud Native Computing Foundation (Link befindet sich außerhalb von ibm.com), dem anbieterneutralen Open Source-Hub des cloudnativen Computing. Seitdem hat sich Kubernetes zum weltweit am weitesten verbreiteten Container-Orchestrierungstool für die Ausführung von containerbasierten Workloads entwickelt.

Kubernetes ist auch als „k8s“ oder „kube“ bekannt und wurde speziell dafür entwickelt, das Management von Containern zu automatisieren. Container sind die Standardeinheit der Software, die Code und alle seine Abhängigkeiten paketiert. Das Orchestrierungstool wird sehr geschätzt, da es schnell und zuverlässig in jeder Infrastrukturumgebung ausgeführt werden kann, egal ob On-Premises, Private Cloud, Public Cloud oder Hybrid Cloud.

Im Gegensatz zu virtuellen Maschinen (VMs), die physische Hardware virtualisieren, virtualisieren Container das Betriebssystem (wie etwa Linux oder Windows). Jeder Container enthält nur die Bibliotheken und Abhängigkeiten der Anwendung. Da Container sich den Betriebssystemkernel mit dem Host teilen, gelten sie als schlank, schnell und tragbar.

Kubernetes und sein Ökosystem aus Diensten, Support und Tools sind zur Grundlage für eine moderne Cloud-Infrastruktur und Anwendungsmodernisierung geworden. Alle großen Cloud-Anbieter, darunter Amazon Web Services (AWS), Google, Microsoft, IBM und Red Hat, integrieren Kubernetes in ihre Cloud-Plattformen, um Platform-as-a-Service (PaaS) - und Infrastructure-as-a-Service (IaaS) -Funktionen zu verbessern.

Kubernetes-Architektur

Aus den folgenden grundlegenden Komponenten besteht eine Kubernetes-Architektur: 

Cluster

Ein Kubernetes-Cluster ist eine Reihe physischer oder virtueller Maschinen (Nodes), die zusammen an der Ausführung containerisierter Anwendungen arbeiten. Cluster bilden die Grundlage der Kubernetes-Architektur.

Master Nodes

Master Nodes stellen einen einzelnen Rechenhost dar – entweder eine virtuelle oder eine physische Maschine. Sie hosten die Kontrollebenen-Komponenten von Kubernetes und sind für die Planung und Skalierung von Anwendungen verantwortlich. Durch die Verwaltung aller Rechen-, Netzwerk- und Speicherressourcen in einem Kubernetes-Cluster stellt der Master Node sicher, dass containerisierte Anwendungen und Services gleichermaßen auf Worker Nodes im Cluster bereitgestellt werden.

Worker Nodes

Worker Nodes sind für den Betrieb der Container und die Ausführung aller vom Master Node zugewiesenen Arbeiten verantwortlich. Sie hosten auch Anwendungscontainer, die als Pods gruppiert sind.

Pods

Pods sind Gruppen mit einem oder mehreren Containern (z. B. Linux oder Docker) mit denselben Rechenressourcen und demselben Netzwerk. Es handelt sich um Cluster-Bereitstellungseinheiten, die auch als Skalierbarkeitseinheiten fungieren. Wenn zum Beispiel ein Container in einem Pod ein hohes Datenverkehrsaufkommen aufweist, kann Kubernetes diesen Pod auf andere Nodes im Cluster replizieren. Kubernetes kann Pods auch abschalten, wenn der Datenverkehr abnimmt.

Weitere zusätzliche Kubernetes-Komponenten sind:

  • Bereitstellung: Die Bereitstellung in Kubernetes verwaltet eine Reihe von Pods für die Ausführung eines Anwendungs-Workloads. Eine Bereitstellung identifiziert, wie viele Replikate eines Pods auf dem Cluster ausgeführt werden sollen. Wenn ein Pod ausfällt, erstellt die Bereitstellung einen neuen. Diese wichtige Funktion hilft dabei, die Anzahl der Replikat-Pods zu skalieren, Code-Updates durchzuführen und die Verfügbarkeit aufrechtzuerhalten. Bereitstellungen werden mit kubectl, dem Kubernetes-spezifischen Befehlszeilentool, durchgeführt. 
  • Service: Ein Kubernetes-Service ist eine Abstraktionsschicht, die einen logischen Satz von Pods und den Zugriff auf diese definiert. Ein Service zeigt eine Netzwerkanwendung, die auf einem oder mehreren Pods in einem Cluster ausgeführt wird. Er bietet eine abstrakte Methode zur Lastverteilung von Pods. 
  • API-Server: Der API-Server in Kubernetes stellt die Kubernetes-API (die Schnittstelle zur Verwaltung, Erstellung und Konfiguration von Kubernetes-Clustern) bereit und dient als Einstiegspunkt für alle Befehle und Abfragen.
Networking — Begriffe und Konzepte

Beim grundlegenden Computer-Networking werden zwei oder mehr Rechengeräte miteinander verbunden, um Daten gemeinsam zu nutzen und Ressourcen auszutauschen, entweder über Kabel oder über WLAN.

In physischen Netzwerken werden physische Server mit physischen Netzwerkgeräten wie Switches, Routern und Ethernet-Kabeln verbunden, um eine Verbindung zum Internet herzustellen. 

In virtuellen Netzwerken werden softwaredefinierte Netzwerke (SDN), Komponenten wie virtuelle Ethernet-Geräte und virtuelle Schnittstellen auf Bare Metal Servern oder virtuellen Maschinen installiert, um eine Verbindung mit dem Internet herzustellen. Die Kubernetes-Bereitstellung nutzt SDN, um die Netzwerkkommunikation zwischen Clustern zu konfigurieren und zu verwalten.

Bevor wir uns eingehender mit dem Thema Kubernetes-Networking befassen, sollten wir die grundlegenden Begriffe kennenlernen:

  • Netzwerk-Host: Ein Netzwerk-Host ist ein Computer, der mit einem Netzwerk verbunden ist, das Informationen, Anwendungen oder Services für andere Hosts oder Nodes im Netzwerk bereitstellt.
  • IP-Adresse (Internet Protocol): Eine IP-Adresse ist eine eindeutige Nummer, die jedem Gerät zugewiesen ist, das mit einem Netzwerk verbunden ist, das das Internet Protocol für die Kommunikation verwendet. Sie identifiziert das Host-Netzwerk des Geräts und den Standort des Geräts im Host-Netzwerk.
  • Localhost: Localhost ist ein Standard-Hostname, der als private IP-Adresse fungiert und direkt auf den verwendeten Computer oder das verwendete Gerät verweist.
  • Port: Ein Port identifiziert eine bestimmte Verbindung zwischen Netzwerkgeräten. Jeder Port wird durch eine Nummer identifiziert. Computer bestimmen anhand der Portnummern, welche Anwendungen, Services oder Prozesse bestimmte Nachrichten empfangen sollen.
  • NAT (Network Address Translation): NAT ändert interne oder private Adressen in öffentliche oder global routierbare IP-Adressen, was sicheren Internetzugang ermöglicht. Mit NAT kann eine einzige IP-Adresse eine ganze Gruppe von Computergeräten repräsentieren.
  • Node Agents: Node Agents sind administrative Agenten, die Anwendungsserver auf einem Hostsystem überwachen und administrative Anforderungen an Server weiterleiten.
  • Network Namespace: Ein Network Namespace ist eine Sammlung von Netzwerkschnittstellen und Anweisungen zur Routingtabelle, die eine Isolation zwischen Netzwerkgeräten ermöglicht.
  • Proxy/Proxy-Server: Ein Proxy bietet ein Gateway zwischen Benutzern und dem Internet. 
Wie funktioniert Kubernetes-Networking?

Kubernetes wurde entwickelt, verteilte Systeme mit einer über ein Cluster von Maschinen verteilten Netzwerkebene auszuführen. Die Kubernetes-Cluster-Vernetzung bietet nicht nur Konnektivität zwischen den Komponenten, sondern schafft auch eine nahtlose Umgebung, in der sich Daten durch Software-defined Networking (SDN) frei und effizient bewegen können.

Ein weiteres besonderes Merkmal des Kubernetes-Networking ist seine flache Netzwerkstruktur, was bedeutet, dass alle Komponenten verbunden werden können, ohne auf andere Hardware angewiesen zu sein. In Kubernetes kann jeder Pod in einem Cluster mit jedem anderen Pod kommunizieren, unabhängig davon, auf welchem Node er ausgeführt wird. Das flache Netzwerk bietet eine effiziente Möglichkeit zur gemeinsamen Nutzung von Ressourcen und macht eine dynamische Portzuweisung überflüssig.

Insgesamt abstrahiert das Kubernetes-Netzwerk die Komplexität und ermöglicht es Entwicklungs- und Operations-Teams, sich auf die Erstellung und Wartung von Anwendungen zu konzentrieren, anstatt sich mit komplizierten Netzwerkkonfigurationen zu beschäftigen.

Kubernetes-Networking-Modell

Kubernetes bietet ein Networking-Modell, mit dem die Herausforderungen der Orchestrierung von Containeranwendungen in einer verteilten Umgebung bewältigt werden können. Die Container-Laufzeit auf jedem Node implementiert das Networking-Modell und hält sich an die folgenden Regeln:

  • Jeder Pod hat seine eigene IP-Adresse, die innerhalb des Clusters geroutet werden kann. Durch diese Funktion entfällt die Notwendigkeit, Verbindungen zwischen Pods und Mapping-Ports zu erstellen.
  • Da jeder Pod seine eigene IP-Adresse hat, ist NAT nicht erforderlich. Alle Pods können ohne NAT mit allen anderen Pods im Cluster kommunizieren.
  • Agenten auf einem Node (z. B. dem Kubelet, dem primären Node Agent, der auf jedem Node ausgeführt wird) können mit allen Pods auf diesem bestimmten Knoten kommunizieren. 

Das Kubernetes-Networking-Modell gilt für vier grundlegende Arten der Kubernetes-Kommunikation:

1. Container-to-Container-Networking

Container sind die kleinste Einheit in einem Kubernetes-Netzwerk. In grundlegenden Netzwerkkonfigurationen kommunizieren Container innerhalb eines einzelnen Pods über localhost. Diese Kommunikation ist möglich, weil Container im selben Pod denselben Network Namespace teilen, der Netzwerkressourcen wie Speicher, IP-Adresse und Port Space umfasst.

2. Pod-to-Pod-Networking

Die Pod-to-Pod-Kommunikation umfasst die Kommunikation zwischen Pods auf demselben Node sowie die Kommunikation zwischen Pods auf verschiedenen Nodes. Jeder Pod in einem Kubernetes-Cluster hat seine eigene eindeutige IP-Adresse, die eine direkte Kommunikation zwischen Pods ermöglicht, unabhängig davon, auf welchem Node sie sich befinden. Darüber hinaus stellt jeder Kubernetes-Cluster zusätzlich zur Pod-IP-Adresse automatisch einen DNS-Dienst (Domain Name System Service) bereit. Der DNS-Dienst, bei dem Pods (und Diensten) Namen zugewiesen werden, erstellt für Administratoren leicht lesbare Namen und bietet so einen einfachen Mechanismus zur Diensterkennung.

3. Pod-to-Service-Networking

Ein Dienst in Kubernetes ist eine Abstraktion, die einen logischen Satz von Pods definiert und die Offenlegung des externen Datenverkehrs, den Lastausgleich und die Diensterkennung für diese Pods ermöglicht. Dienste erleichtern sowohl die Pod-to-Service- als auch die External-to-Service-Kommunikation.

Laut dem Kubernetes-Networking-Modell sind Pod-IP-Adressen kurzlebig. Wenn ein Pod abstürzt oder gelöscht wird und an seiner Stelle ein neuer Pod erstellt wird, erhält der neue Pod daher höchstwahrscheinlich eine neue IP-Adresse.

Bei der Pod-to-Service-Kommunikation ist ein ClusterIP ein Diensttyp, der einer Reihe von Pods eine stabile virtuelle IP-Adresse bereitstellt. Diese interne IP ist nur innerhalb des Clusters erreichbar und kann für die interne Kommunikation zwischen Pods und Services verwendet werden.

Der kube-Proxy, der auf jedem Node in einem Cluster installiert ist, unterhält Netzwerkregeln auf dem Host und überwacht Änderungen an Services und Pods. Wenn Pods erstellt oder zerstört werden, aktualisiert der kube-Proxy iptables (ein Hilfsprogramm zum Erstellen von Regeln in der Linux-Kernel-Firewall für die Weiterleitung des Datenverkehrs), um diese Änderung widerzuspiegeln, sodass der an die Dienst-IP gesendete Datenverkehr korrekt weitergeleitet wird.

4. External-to-service-Networking

External-to-Service-Networking bezieht sich auf die Bereitstellung von und den Zugriff auf Dienste, wie externe Dienste oder Datenbanken, von außerhalb des Kubernetes-Clusters. 

Kubernetes bietet mehrere Dienste, um externen Datenverkehr in einen Cluster zu ermöglichen:

  • ClusterIP: ClusterIP ist zwar der Standard-Kubernetes-Service für interne Kommunikation, aber auch externer Traffic kann über den kube-Proxy darauf zugreifen. ClusterIP kann hilfreich sein, wenn Sie über einen Laptop auf einen Dienst zugreifen oder einen Dienst debuggen möchten.
  • NodePort: Der NodePort stellt den Dienst an einem statischen Port auf der IP jedes Nodes zur Verfügung, so dass der Dienst auch außerhalb des Clusters zugänglich ist. Der NodePort ist die einfachste Möglichkeit zur Durchführung von External-to-Service-Networking und wird häufig zu Testzwecken verwendet, beispielsweise zum Testen des öffentlichen Zugriffs auf eine App.
  • LoadBalancer: Der LoadBalancer ist der Standard für External-Service-Networking. Er stellt den Service extern über die Lastverteilung eines Cloud-Anbieters bereit und weist dem Service eine öffentliche IP-Adresse zu. Der Datenverkehr von der externen Lastverteilung wird dann an die Backend-Pods geleitet.
  • ExternalName: Ein externer Namensdienst ermöglicht den Zugriff auf einen externen Service durch DNS-Namen, ohne ihn im DNS-Cluster offenzulegen. Dieser Diensttyp hilft dabei, einen stabilen DNS-Namen für externe Dienste bereitzustellen, z. B. Messaging-Dienste, die nicht im Cluster gehostet werden. 
  • Ingress: Kubernetes-Ingress ist eine Sammlung von Routing-Regeln rund um den externen Zugriff auf Services innerhalb des Clusters. Der Ingress-Controller ist eine Lastverteilung, die als Network-Bridge zwischen Kubernetes-Diensten und externen Diensten fungiert. 
Kubernetes-Netzwerkrichtlinien

Kubernetes-Netzwerkrichtlinien sind ein Anwendungskonstrukt, das eine wichtige Rolle im Kubernetes-Networking spielt. Mit diesen Richtlinien können Administrations- und Entwicklungsteams Regeln definieren, die festlegen, wie Pods miteinander und mit anderen Netzwerkendpunkten kommunizieren können. Netzwerkrichtlinien werden über die Netzwerkrichtlinien-API von Kubernetes angewendet und bestehen aus den folgenden grundlegenden Komponenten: 

  • Pod-Selektor: Der Pod-Selektor gibt anhand von Labels und Selektoren an, für welche Pods die Richtlinie gilt.
  • Ingress: Ingress definiert Regeln für eingehenden Datenverkehr zu Pods
  • Egress: Egress definiert Regeln für ausgehenden Datenverkehr von Pods.

Kubernetes-Netzwerkrichtlinien helfen bei der Definition und Verwaltung von Sicherheitsrichtlinien, indem sie Regeln festlegen, die kontrollieren, welche Pods miteinander kommunizieren können, und so unberechtigten Zugriff und bösartige Angriffe verhindern. Netzwerkrichtlinien sorgen auch für die Isolation zwischen Pods und Diensten, sodass nur diese Pods oder Dienste mit einer zugelassenen Gruppe von Peers kommunizieren können. Die Isolation ist beispielsweise für Situationen mit mehreren Mandanten von entscheidender Bedeutung, wenn DevOps- oder andere Teams denselben Kubernetes-Cluster gemeinsam nutzen, aber an verschiedenen Projekten arbeiten.

Für Unternehmen mit spezifischen Compliance-Anforderungen helfen Netzwerkrichtlinien bei der Festlegung und Durchsetzung von Netzwerkzugangskontrollen. Dies trägt zur Einhaltung gesetzlicher Standards bei und stellt sicher, dass der Cluster die Richtlinien der Organisation einhält.

Container Network Interface (CNI) und Netzwerk-Plugins

Container Network Interface (CNI, deutsch: Container-Netzwerk-Schnittstelle) ist eine weitere wichtige Funktion im Zusammenhang mit Kubernetes-Networking. CNI wird von der Cloud Native Computing Foundation entwickelt und verwaltet und wird von Kubernetes und anderen Container-Runtimes, einschließlich Red Hat OpenShift® und Apache Mesos, verwendet. Es ist eine standardisierte Spezifikation und eine Reihe von APIs, die definieren, wie Netzwerk-Plugins das Container-Networking ermöglichen sollen. CNI-Plugins können IP-Adressen zuweisen, Network Namespaces erstellen, Netzwerkrouten einrichten usw., um die Pod-to-Pod-Kommunikation sowohl innerhalb desselben Nodes als auch nodeübergreifend zu ermöglichen.

Während Kubernetes eine Standard-CNI bereitstellt, gibt es zahlreiche CNI-Plugins von Drittanbietern, darunter Calico, Flannel und Weave, die für die Konfiguration und Sicherheit in containerbasierten Netzwerkumgebungen konzipiert sind. Auch wenn sie unterschiedliche Funktionen und Netzwerkansätze haben, wie Overlay-Netzwerke oder direktes Routing, halten sie sich alle an die CNI-Spezifikationen, die mit Kubernetes kompatibel sind. 

Kubernetes-Tutorials

Wenn Sie mit der Arbeit mit Kubernetes beginnen oder Ihre vorhandenen Kenntnisse über Kubernetes und die Tools des Kubernetes-Ökosystems erweitern möchten, sollten Sie eines dieser Tutorials ausprobieren.

Kubernetes-Tutorials: Praxisnahe Übungen mit Zertifizierung

Interaktive, browserbasierte Schulung zur Bereitstellung und zum Betrieb eines Clusters auf dem IBM Cloud® Kubernetes Service. Downloads oder Konfigurationen nicht erforderlich.

8 Tipps und Tricks zu Kubernetes Kubernetes-Tutorials auf IBM Developer Mit Kubernetes eine Microservices-App in IBM Cloud bereitstellen
Weiterführende Lösungen
IBM Cloud® Kubernetes Service

Stellen Sie sichere und hochverfügbare Cluster in einer nativen Kubernetes-Erfahrung bereit.

IBM Cloud Kubernetes Service kennenlernen

Red Hat OpenShift® on IBM Cloud®

Mit Red Hat OpenShift on IBM Cloud haben OpenShift-Entwickler eine schnelle und sichere Möglichkeit zur Containerisierung und Bereitstellung von Unternehmensworkloads in Kubernetes-Clustern.

Red Hat OpenShift on IBM® Cloud kennenlernen

IBM® Cloud Code Engine

IBM Cloud Code Engine ist eine vollständig verwaltete serverlose Plattform, mit der Sie Ihren Container-, Anwendungscode- oder Batch-Job auf einer vollständig verwalteten Container-Laufzeit ausführen können.

IBM® Cloud Code Engine kennenlernen
Ressourcen IBM Cloud-Training für Entwickler

Erweitern Sie Ihre Kubernetes-Kenntnisse durch Kurse, die im Rahmen der IBM Cloud Professional Developer-Zertifizierung enthalten sind.

Die Show muss weitergehen

Studierende präsentieren ihre Kunst mit Red Hat® OpenShift® on IBM Cloud®.

Nutzung von Containern im Unternehmen

Container sind Teil einer Hybrid-Cloud-Strategie, mit der Sie Workloads von überall aus erstellen und verwalten können.

Was ist Kubernetes?

Kubernetes ist eine Container-Orchestrierungsplattform für die Planung und Automatisierung der Bereitstellung, Verwaltung und Skalierung containerisierter Anwendungen.

Was sind Container?

Container sind ausführbare Softwareeinheiten, in denen Anwendungscode zusammen mit seinen Bibliotheken und Abhängigkeiten auf übliche Weise verpackt ist, sodass der Code überall ausgeführt werden kann.

Was ist Containerorchestrierung?

Containerorchestrierung automatisiert und vereinfacht die Provisionierung, Bereitstellung und Verwaltung von containerisierten Anwendungen.

Machen Sie den nächsten Schritt

Schauen Sie sich IBM Cloud Kubernetes Service an und erhalten Sie einen Cluster kostenlos. Sie müssen lediglich ein kostenloses IBM-Cloud-Konto erstellen und können einen Cluster 30 Tage lang testen. Möchten Sie mehr über Preisoptionen erfahren? Konfigurieren Sie Ihren Kubernetes-Cluster und wählen Sie Angebot und Preis.

Holen Sie sich einen Cluster kostenlos Preisoptionen anzeigen