GKE-Netzwerkgrundlagen kennenlernen

Das Netzwerk von Google Kubernetes Engine (GKE) bietet eine leistungsstarke, skalierbare und sichere Grundlage für Ihre containerisierten Anwendungen, die auf der globalen VPC von Google basiert. Es übersetzt das abstrakte Kubernetes-Netzwerkmodell in konkrete, leistungsstarke Ressourcen wie globale Load-Balancer und VM-Netzwerke mit hohem Durchsatz.

Dieses Dokument und die übrige Dokumentation richten sich an Cloud-Architekten und Netzwerkspezialisten, die die Netzwerkarchitektur ihrer Organisation entwerfen.

Warum sich das Kubernetes-Netzwerk unterscheidet

Wenn Sie Kubernetes zum Orchestrieren Ihrer Anwendungen verwenden, müssen Sie beim Netzwerkdesign umdenken. Bei Kubernetes steht die Kommunikation zwischen Pods, Diensten und externen Clients im Vordergrund, nicht die Verwaltung einzelner Host- oder VM-Netzwerke. Diese Abstraktion vereinfacht die Bereitstellung und Skalierung von Anwendungen, da Komplexitäten wie die manuelle Portzuordnung entfallen.

Vorbereitung

Bevor Sie sich mit dem Netzwerk in GKE befassen, sollten Sie Folgendes wissen:

  • Wichtige Konzepte im allgemeinen Netzwerk, Google Cloud, und in Kubernetes.
  • Informationen unter Erste Schritte mit GKE.

Kernnetzwerk und Google Cloud Grundlagen

GKE basiert auf Standardnetzwerkprinzipien. Um zu verstehen, wie GKE Traffic innerhalb und zwischen Clustern verwaltet und weiterleitet, sollten Sie mit den folgenden Kernnetzwerkkonzepten vertraut sein.

Netzwerkschichten und ‑protokolle

Um zu verstehen, wie Daten durch ein Netzwerk übertragen werden, beginnen Sie mit den Netzwerkschichten. GKE verwendet Konzepte aus der Transportschicht, Internetschicht und Anwendungsschicht des Netzwerkstacks. Sie sollten mit den grundlegenden Funktionen und gängigen Protokollen wie HTTP, DNS und der TCP/IP-Suite vertraut sein. Weitere Informationen finden Sie unter dem OSI-Modell.

  • Transportschicht – Transmission Control Protocol (TCP) oder User Datagram Protocol (UDP): Verarbeitet die End-to-End-Kommunikation zwischen Anwendungen. Transmission Control Protocol (TCP) bietet eine zuverlässige, geordnete und fehlergeprüfte Übertragung, die für den meisten Anwendungstraffic unerlässlich ist. User Datagram Protocol (UDP) bietet eine schnellere, verbindungslosere Kommunikation, die häufig für Streaming oder Gaming verwendet wird. GKE verwendet beide Protokolle für die Pod- und Dienstkommunikation.

  • Internetschicht – Internet Protocol (IP): Adressiert und leitet Pakete über verschiedene Netzwerke weiter. Jeder Pod und Knoten in GKE erhält eine IP-Adresse. Das IP-Adressrouting bestimmt, wie Traffic durch Ihren Cluster und Ihr VPC-Netzwerk geleitet wird.

  • Anwendungsschicht – Hypertext Transfer Protocol (HTTP) und Domain Name System (DNS): Auf dieser Schicht interagieren Anwendungen mit dem Netzwerk. HTTP und HTTPS sind grundlegend für die Webkommunikation und werden häufig von Ingress-Controllern und Load-Balancern verwendet, um Anwendungen verfügbar zu machen. DNS ist für die Service Discovery in Kubernetes unerlässlich, da es für menschenlesbare Dienstnamen in IP-Adressen übersetzt.

IP-Adressierung und CIDR-Notation

Sie müssen die IP-Adressierung und die CIDR-Notation (Classless Inter-Domain Routing) verstehen, da das Kubernetes-Netzwerkmodell IP-Adressen umfassend für die Kommunikation zwischen allen Komponenten verwendet. CIDR ist entscheidend für die Planung der IP-Adresszuweisung Ihres Clusters in Ihrem Google Cloud VPC-Netzwerk. Damit können Sie Blöcke von IP-Adressen für Pods, Dienste und Knoten definieren. Wenn Sie beispielsweise 10.10.0.0/16 für Ihre Pods zuweisen, werden 65.536 IP-Adressen reserviert. Durch eine ordnungsgemäße CIDR-Planung können Sie verhindern, dass Ihnen beim Skalieren Ihres Clusters die IP-Adressen ausgehen.

Linux-Netzwerkdienstprogramme

GKE verwendet zugrunde liegende Linux-Kernel-Funktionen, um das Trafficrouting und den Lastenausgleich im Cluster zu implementieren. Sie sollten mit den grundlegenden Konzepten und Dienstprogrammen der Linux-Netzwerkverwaltung wie Routing tabellen und iptables vertraut sein. Traditionell programmiert kube-proxy, eine wichtige Kubernetes-Komponente auf jedem Knoten, diese Dienstprogramme, um Traffic abzufangen, der für einen Dienst bestimmt ist, und ihn an einen der Backend-Pods weiterzuleiten. In modernen GKE-Clustern, die GKE Dataplane V2 verwenden, wird iptables durch eBPF ersetzt, um die Leistung und Beobachtbarkeit zu verbessern.

Netzwerkmodell von Kubernetes

Das Netzwerkmodell von Kubernetes definiert, wie containerisierte Anwendungen innerhalb eines Clusters kommunizieren. Im Gegensatz zu herkömmlichen Modellen, die sich auf virtuelle Maschinen konzentrieren, legt Kubernetes den Schwerpunkt auf die Pod-zu-Pod- und dienstbasierte Kommunikation. Dieses Modell macht die Anwendungsvernetzung vorhersehbarer, indem die Unzuverlässigkeit dynamischer Pod-IP-Adressen abstrahiert wird. Da Pods sitzungsspezifisch sind und jederzeit mit einer neuen IP-Adresse neu erstellt werden können, ist die direkte Kommunikation mit Pod-IP-Adressen von Natur aus instabil. Kubernetes löst dieses Problem, indem Pods in einem Dienst gruppiert werden. Ein Dienst bietet eine stabile, virtuelle IP-Adresse (ClusterIP) und einen konsistenten DNS-Namen, mit denen sich Anwendungen zuverlässig verbinden können. Dieser stabile Endpunkt in Kombination mit einem flachen Netzwerk, das es allen Pods ermöglicht, direkt ohne NAT zu kommunizieren, bildet eine robuste Grundlage für moderne, containerisierte Anwendungen.

Wichtige Prinzipien des Kubernetes-Netzwerkmodells

  • Jeder Pod hat eine eindeutige IP-Adresse: Jeder Pod in einem Kubernetes-Cluster erhält eine eigene IP-Adresse, die von allen Containern innerhalb dieses Pods gemeinsam genutzt wird. Mit dieser eindeutigen IP-Adresse können Pods wie einzelne Hosts im Netzwerk fungieren, ähnlich wie virtuelle Maschinen.

  • Flache Pod-zu-Pod-Kommunikation ohne NAT: Alle Pods können direkt miteinander kommunizieren, indem sie ihre IP-Adressen verwenden, unabhängig vom Knoten, auf dem sie ausgeführt werden. In GKE wird diese direkte Kommunikation mithilfe von VPC-nativen Clustern erreicht, bei denen Pod-IP Adressen Alias-IP-Adressen in Ihrem VPC-Netzwerk sind. Diese Alias-IP-Adressen machen Pods innerhalb der VPC direkt routingfähig, wodurch die Netzwerkadressübersetzung (Network Address Translation, NAT) entfällt und die knotenübergreifende Kommunikation vereinfacht wird.

  • Dienste stellen stabile Endpunkte bereit: Da Pods sitzungsspezifisch sind und jederzeit mit neuen IP-Adressen neu erstellt werden können, ist die direkte Kommunikation mit Pod IP-Adressen unzuverlässig. Kubernetes-Dienste lösen dieses Problem, indem sie eine Reihe von Pods gruppieren und eine stabile IP-Adresse (ClusterIP) und einen DNS-Namen bereitstellen. Diese Abstraktion ermöglicht einen konsistenten Zugriff auf eine dynamische Gruppe von Pods.

  • Integrierte Service Discovery mit DNS: Kubernetes enthält einen integrierten DNS Dienst, der Diensten automatisch DNS-Namen zuweist. Anwendungen können diese Namen (z. B. my-service.my-namespace.svc.cluster.local) verwenden, um andere Dienste zuverlässig zu finden und mit ihnen zu kommunizieren.

  • Integrierter Lastenausgleich : Wenn Clients Traffic an die ClusterIP-Adresse eines Dienstes senden, fangen Netzwerkregeln auf dem Knoten (programmiert von kube-proxy oder GKE Dataplane V2) den Traffic ab und verteilen ihn per Load-Balancing auf alle fehlerfreien Pods in diesem Dienst. Diese Verteilung erfolgt an der Quelle, wodurch sie sehr effizient ist und zur Hochverfügbarkeit beiträgt.

Zusammenfassend lässt sich sagen, dass das Kubernetes-Netzwerkmodell viele herkömmliche Netzwerkkomplexitäten in eine einfachere, leistungsstärkere Gruppe von Primitiven für containerisierte Anwendungen abstrahiert. Durch die Aktivierung der direkten Pod-Kommunikation, stabiler Dienstendpunkte und des integrierten DNS und Lastenausgleichs bietet es eine robuste, skalierbare Grundlage für moderne, containerisierte Anwendungen.

Die Beziehung zwischen GKE und Google Cloud

Das GKE-Netzwerk fungiert als Brücke zwischen dem konzeptionellen Modell von Kubernetes-Netzwerken und der physischen Infrastruktur von Google Cloud:

  • Kubernetes-Netzwerkmodell: Kubernetes definiert Regeln, nach denen jeder Pod eine eigene IP-Adresse erhält, wodurch eine direkte Pod-zu-Pod-Kommunikation ohne NAT möglich ist.

  • Google Cloud Netzwerk: Dies ist die zugrunde liegende Infrastruktur, einschließlich VPC, Subnetze, Firewalls und Load Balancer.

  • GKE-Netzwerk: Diese Verbindungsschicht implementiert das Kubernetes Modell mithilfe der Infrastruktur von Google Cloud.

  • Container Network Interface (CNI): GKE verwendet auf jedem Knoten ein CNI-Plug‑in, um die Pod-IP-Adresszuweisung zu verarbeiten und Pods mit dem Netzwerk des Knotens zu verbinden.

  • GKE-Steuerungsebene: Diese Komponenten interagieren mit Google Cloud um VPC-Routen für Pod-IP-Bereiche automatisch zu konfigurieren, Firewallregeln zu verwalten und Load-Balancer basierend auf Ihren Kubernetes-Bereitstellungen bereitzustellen.

Das folgende Diagramm zeigt den Fluss von Ingress- und Egress-Traffic zu und von GKE-Clustern, die sich in einer VPC und hinter einer Cloud-Firewall befinden. Eingehender Traffic umfasst Load-Balancing-Traffic von Komponenten wie SSL-Proxy, TCP-Proxy oder HTTP(S)-Load-Balancing. Ausgehender Traffic umfasst Ziele wie externe Netzwerke, Nutzer und TCP-Proxy-Load-Balancing.
Abbildung 1. Das GKE-Netzwerk ist in Google Cloud Komponenten wie VPC, Cloud Load Balancing, und Cloud Firewall integriert, um eine sichere und skalierbare Umgebung zu bieten.

Warum Google Cloud Netzwerkkenntnisse für GKE unerlässlich sind

GKE basiert auf Google Cloud der Netzwerkinfrastruktur. GKE erstellt keine separate Netzwerk schicht, sondern verwendet vorhandene Google Cloud Netzwerkkomponenten. Daher sind Netzwerkkenntnisse unerlässlich, um Ihre GKE-Cluster zu entwerfen und zu sichern. Google Cloud

Hier sind die Gründe, warum Google Cloud Netzwerkkenntnisse wichtig sind:

  • Ihr Cluster wird in einer VPC ausgeführt: Jeder GKE Cluster wird in einer VPC ausgeführt. Alle IP-Adressen für Knoten, Pods und Dienste stammen aus den IP-Adressbereichen, die in Ihren VPC-Subnetzen definiert sind. Um IP-Adressen richtig zuzuweisen und zu vermeiden, dass Ihnen die Adressen ausgehen, benötigen Sie fundierte Kenntnisse im VPC- und Subnetzdesign. Weitere Informationen finden Sie in der VPC Dokumentation.

  • Anwendungen werden über Google Cloud Load-Balancerverfügbar gemacht: Wenn Sie Anwendungen außerhalb des Clusters über einen LoadBalancer-Dienst oder Ingress verfügbar machen, stellt GKE einen integrierten Google Cloud Load-Balancer bereit. Ein LoadBalancer-Dienst wird in der Regel für Layer 4-Traffic und ein Ingress für Layer 7-HTTP(S)-Traffic verwendet. Wenn Sie wissen, wie diese Load-Balancer funktionieren, können Sie externen Traffic verwalten, Systemdiagnosen einrichten und Verbindungsprobleme effektiv beheben. Weitere Informationen finden Sie in der Dokumentation zu Cloud Load Balancing.

  • Sicherheit wird durch Google Cloud Firewallregeln: GKE erstellt automatisch einige Firewallregeln, um wichtigen Clustertraffic zuzulassen. Um Ihre Arbeitslasten zu sichern, müssen Sie jedoch benutzerdefinierte VPC-Firewallregeln definieren. Fehlkonfigurationen können kritischen Traffic blockieren. Daher ist es wichtig zu verstehen, wie diese Regeln funktionieren. Weitere Informationen finden Sie in der Dokumentation zu Cloud Next Generation Firewall.

Nächste Schritte