Das Google Kubernetes Engine-Netzwerk (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 restliche 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 vertraut machen, sollten Sie Folgendes wissen:
- Grundlegende Konzepte in den Bereichen allgemeines Networking, Google Cloudund Kubernetes.
- Informationen zu GKE
Grundlagen des Kernnetzwerks Google Cloud
GKE basiert auf Standardnetzwerkprinzipien. Damit Sie verstehen, wie GKE Traffic innerhalb und zwischen Clustern verwaltet und weiterleitet, sollten Sie mit den folgenden grundlegenden Netzwerkkonzepten vertraut sein.
Netzwerkschichten und ‑protokolle
Um zu verstehen, wie Daten durch ein Netzwerk übertragen werden, müssen Sie sich zuerst mit den Netzwerkschichten vertraut machen. GKE verwendet Konzepte aus den Transport-, Internet- und Anwendungsschichten des Netzwerkstacks. Sie sollten mit ihren grundlegenden Funktionen und gängigen Protokollen wie HTTP, DNS und der TCP/IP-Suite vertraut sein. Weitere Informationen finden Sie im OSI-Modell.
Transportschicht – Transmission Control Protocol (TCP) oder User Datagram Protocol (UDP): Verarbeitet die End-to-End-Kommunikation zwischen Anwendungen. Das Transmission Control Protocol (TCP) bietet eine zuverlässige, geordnete und fehlergeprüfte Übermittlung, die für den meisten Anwendungs-Traffic unerlässlich ist. Das User Datagram Protocol (UDP) bietet eine schnellere, verbindungslose Kommunikation, die häufig für Streaming oder Gaming verwendet wird. GKE verwendet beide Protokolle für die Kommunikation zwischen Pods und Diensten.
Internetschicht – Internet Protocol (IP): Adressiert und leitet Pakete über verschiedene Netzwerke hinweg weiter. Jeder Pod und jeder 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 den Menschen lesbare Dienstnamen in IP-Adressen übersetzt.
IP-Adressierung und CIDR-Notation
Sie müssen sich mit IP-Adressierung und CIDR-Notation (Classless Inter-Domain Routing) auskennen, da im Kubernetes-Netzwerkmodell IP-Adressen für die Kommunikation zwischen allen Komponenten verwendet werden. CIDR ist entscheidend für die Planung der IP-Adresszuweisung des Clusters in Ihrem Google CloudVPC-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. Eine ordnungsgemäße CIDR-Planung hilft, Situationen zu vermeiden, in denen Ihnen beim Skalieren Ihres Clusters die IP-Adressen ausgehen.
Linux-Netzwerkdienstprogramme
GKE verwendet zugrunde liegende Linux-Kernel-Funktionen, um das Traffic-Routing und den Lastenausgleich innerhalb des Clusters zu implementieren. Sie sollten mit grundlegenden Konzepten und Dienstprogrammen der Linux-Netzwerkverwaltung wie Routingtabellen und iptables vertraut sein.
Normalerweise 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.
Kubernetes-Netzwerkmodell verstehen
Das Kubernetes-Netzwerkmodell definiert, wie containerisierte Anwendungen innerhalb eines Clusters kommunizieren. Anders als bei herkömmlichen Modellen, die sich auf virtuelle Maschinen konzentrieren, liegt der Schwerpunkt bei Kubernetes auf der Pod-zu-Pod- und dienstbasierten Kommunikation. Dieses Modell macht die Anwendungsnetzwerke vorhersehbarer, da 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 stellt eine stabile, virtuelle IP-Adresse (ClusterIP) und einen konsistenten DNS-Namen bereit, mit denen Anwendungen zuverlässig eine Verbindung herstellen 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 Grundsätze 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 agieren, ähnlich wie virtuelle Maschinen.
Direkte Pod-zu-Pod-Kommunikation ohne NAT: Alle Pods können direkt über ihre IP-Adressen miteinander kommunizieren, unabhängig davon, auf welchem Knoten sie ausgeführt werden. In GKE wird diese direkte Kommunikation durch VPC-native Cluster erreicht, in denen Pod-IP-Adressen Alias-IP-Adressen in Ihrem VPC-Netzwerk sind. Durch diese Alias-IP-Adressen sind Pods innerhalb der VPC direkt routingfähig. Dadurch ist keine Netzwerkadressübersetzung (Network Address Translation, NAT) erforderlich und die knotenübergreifende Kommunikation wird vereinfacht.
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 Gruppe 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 Diensterkennung mit DNS: Kubernetes enthält einen integrierten DNS-Dienst, der Services 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.Integriertes Load-Balancing: Wenn Clients Traffic an die
ClusterIP-Adresse eines Dienstes senden, fangen Netzwerkregeln auf dem Knoten (programmiert vonkube-proxyoder GKE Dataplane V2) den Traffic ab und führen ein Load-Balancing für alle fehlerfreien Pods in diesem Dienst durch. Die Verteilung erfolgt an der Quelle, was sehr effizient ist und für eine hohe Verfügbarkeit sorgt.
Zusammenfassend lässt sich sagen, dass das Kubernetes-Netzwerkmodell viele herkömmliche Netzwerkkomplexitäten in eine einfachere, leistungsfähigere Gruppe von Primitiven für containerisierte Anwendungen abstrahiert. Durch die Aktivierung der direkten Pod-Kommunikation, stabile Dienstendpunkte sowie integrierte DNS- und Load-Balancing-Funktionen 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 des Kubernetes-Netzwerks und der physischen Infrastruktur von Google Cloud:
Kubernetes-Netzwerkmodell: Kubernetes definiert Regeln, nach denen jeder Pod eine eigene IP-Adresse erhält. Dadurch ist eine direkte Pod-zu-Pod-Kommunikation ohne NAT möglich.
Google Cloud Netzwerk: Dies ist die zugrunde liegende Infrastruktur, einschließlich VPC, Subnetze, Firewalls und Load Balancer.
GKE-Netzwerk: Diese Verbindungsebene 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 Zuweisung von Pod-IP-Adressen zu verarbeiten und Pods mit dem Netzwerk des Knotens zu verbinden.
GKE-Steuerungsebene: Diese Komponenten interagieren mitGoogle Cloud , um automatisch VPC-Routen für Pod-IP-Bereiche zu konfigurieren, Firewallregeln zu verwalten und Load-Balancer basierend auf Ihren Kubernetes-Bereitstellungen bereitzustellen.
Warum sind Google Cloud Netzwerkkenntnisse für GKE unerlässlich?
GKE basiert auf der Google CloudNetzwerkinfrastruktur. GKE erstellt keine separate Netzwerkschicht, sondern verwendet vorhandene Google Cloud Netzwerkkomponenten. Daher ist es wichtig, die Google Cloud Netzwerkfunktionen zu verstehen, um Ihre GKE-Cluster zu entwerfen und zu schützen.
Deshalb sind die Google Cloud Grundlagen der Vernetzung wichtig:
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 sie ausgehen, benötigen Sie fundierte Kenntnisse von VPC- und Subnetzdesign. Weitere Informationen finden Sie in der VPC-Dokumentation.
Für die Bereitstellung von Anwendungen werden Google Cloud Load-Balancer verwendet: Google Cloud Wenn Sie Anwendungen außerhalb des Clusters über einen LoadBalancer-Dienst oder einen Ingress bereitstellen, stellt GKE einen integrierten Load-Balancer bereit. Ein LoadBalancer-Dienst wird in der Regel für Layer 4-Traffic verwendet und ein Ingress für Layer 7-HTTP(S)-Traffic. 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 erzwungen: GKE erstellt automatisch einige Firewallregeln, um wichtigen Clustertraffic zuzulassen. Zum Sichern Ihrer Arbeitslasten müssen Sie jedoch benutzerdefinierte VPC-Firewallregeln definieren. Fehlkonfigurationen können kritischen Traffic blockieren. Daher ist es wichtig, die Funktionsweise dieser Regeln zu verstehen. Weitere Informationen finden Sie in der Dokumentation zur Cloud Next Generation Firewall.
Nächste Schritte
- Weitere Informationen zur Architektur
- GKE-Netzwerkrichtlinien und Kubernetes-Netzwerkrichtlinien
- Anwendungen über Dienste verfügbar machen und das Konzept von Kubernetes-Diensten kennenlernen
- Ingress für GKE und Kubernetes-Ingress
- Weitere Informationen zu VPC-nativen Clustern
- Vorteile von GKE Dataplane V2
- GKE-Netzwerkprobleme beheben