GKE-Netzwerkdokumentation und ‑Anwendungsfälle

Die Netzwerkfunktionen in Google Kubernetes Engine (GKE) umfassen eine Vielzahl von Konzepten, darunter Pods, Dienste, DNS, Load-Balancing, Sicherheit und IP-Adressverwaltung. In der Dokumentation wird zwar jede Funktion im Detail beschrieben, aber es kann schwierig sein, bei einem realen Problem zu wissen, wo man anfangen soll.

Dieses Dokument soll Ihnen helfen, sich in der GKE-Netzwerkdokumentation zurechtzufinden, indem es häufige Herausforderungen mit den Funktionen und Abschnitten verknüpft, die diese Herausforderungen lösen. Jeder Anwendungsfall beschreibt ein Szenario, benennt die Herausforderung und verweist auf die relevante Dokumentation. Dieses Dokument richtet sich an Cloud-Architekten, Entwickler und Betriebsteams, die gängige Netzwerkprobleme in GKE verstehen und beheben müssen.

Wenn Sie bereits mit häufigen Netzwerkproblemen vertraut sind und sich lieber direkt mit den technischen Details befassen möchten, können Sie sich die folgenden Ressourcen ansehen, um sich grundlegende Kenntnisse zum GKE-Netzwerk anzueignen:

Anwendungsfall: Netzwerkbasis für GKE entwerfen

In diesem Anwendungsfall sind Sie ein Cloud-Architekt, der eine skalierbare, sichere und zuverlässige Netzwerkbasis für eine neue GKE-Plattform entwerfen muss.

Herausforderung: Ausfall von IP-Adressen verhindern

Szenario:Die Komplexität und Nutzung Ihrer Anwendung werden voraussichtlich zunehmen. Sie müssen also ein Netzwerk entwerfen, das skaliert werden kann, um den erhöhten Traffic zu bewältigen und das Wachstum von Pods, Diensten und Knoten zu unterstützen. Sie müssen auch die Zuweisung von IP-Adressen planen, um eine Ausschöpfung zu vermeiden.

Lösung:Planen Sie Ihr IP-Adressierungsschema so, dass die Anzahl der Knoten, Pods und Dienste berücksichtigt wird, die Sie benötigen. Dazu gehört die Auswahl geeigneter IP-Adressbereiche für die einzelnen Bereiche unter Berücksichtigung der Pod-Dichte und die Vermeidung von Überschneidungen mit anderen Netzwerken. Weitere Informationen finden Sie unter IP-Adressmigration in GKE verwalten.

Herausforderung: Defense-in-Depth-Sicherheit erzwingen

Szenario:Sie müssen Ihre Clustergrenzen sichern und Zero-Trust-Regeln für Pod-zu-Pod-Verbindungen erzwingen.

Lösung:Verwenden Sie Firewallrichtlinien für Clustergrenzen. Weitere Informationen finden Sie unter Kommunikation zwischen Pods und Services mithilfe von Netzwerkrichtlinien steuern.

Herausforderung: Traffic an verschiedene Arten von Anwendungen weiterleiten

Szenario:Sie müssen dafür sorgen, dass andere Dienste und Nutzer verschiedene Arten von Anwendungen erreichen können, z. B. private Back-Ends und öffentliche HTTP(S)-Anwendungen.

Lösung:Verwenden Sie interne Load Balancer für private Backends. Verwenden Sie für öffentliche HTTP(S)-Anwendungen Ingress oder die Gateway API. Weitere Informationen finden Sie unter Load-Balancing in GKE.

Herausforderung: Beobachtbarkeitstools zum Überwachen und Beheben von Problemen mit Arbeitslasten verwenden

Szenario:Sie müssen Probleme mit dem Netzwerktraffic beheben und GKE-Traffic-Flüsse nachvollziehen und überwachen, um Probleme effektiv zu diagnostizieren.

Lösung:Implementieren Sie Tools zur Beobachtbarkeit, um den Netzwerkverkehr zu überwachen und Fehler zu beheben. Weitere Informationen finden Sie unter Traffic mit GKE Dataplane V2 beobachten.

Anwendungsfall: Neuen Mikrodienst bereitstellen

In diesem Anwendungsfall sind Sie ein Entwickler, der einen neuen Mikrodienst in GKE bereitstellt. Sie müssen den Mikrodienst für andere Dienste im Cluster und später für externe Clients zugänglich machen.

Herausforderung: Einen stabilen Endpunkt für die Kommunikation zwischen Pods bereitstellen

Szenario:Ihre Anwendung benötigt Pods, die mit anderen Pods kommunizieren, aber die dynamischen IP-Adressen, die von Pods verwendet werden, machen diese Kommunikation unzuverlässig.

Lösung:Erstellen Sie einen Kubernetes-Dienst. Ein ClusterIP-Dienst bietet eine stabile virtuelle IP-Adresse und einen DNS-Namen, die per Load-Balancing auf die Pods verteilt werden. Weitere Informationen finden Sie unter Kubernetes-Services.

Challenge: Dienst für externen Zugriff verfügbar machen

Szenario:Der Mikrodienst muss für eine Demo über das Internet erreichbar sein.

Lösung:Erstellen Sie einen LoadBalancer-Dienst. GKE stellt einen regionalen externen Passthrough-Network-Load-Balancer mit einer öffentlichen IP-Adresse bereit. Für HTTP(S)-Traffic sollten Sie Ingress oder Gateway verwenden, die Layer-7-Funktionen bieten. Weitere Informationen finden Sie unter LoadBalancer-Dienste.

Herausforderung: Eine dauerhafte, nutzerfreundliche URL zuweisen

Szenario:Der Dienst benötigt einen stabilen Domainnamen für Clients.

Lösung:Reservieren Sie eine statische IP-Adresse und konfigurieren Sie DNS für eine benutzerdefinierte Domain. Weitere Informationen finden Sie unter Domainnamen mit statischen IP-Adressen konfigurieren.

Herausforderung: Erweitertes Traffic-Routing verwalten

Szenario:Wenn Ihre Anwendung wächst, benötigen Sie eine ausgefeiltere Steuerung der Traffic-Weiterleitung. Möglicherweise ist z. B. Folgendes nötig:

  • Mehrere Websites (z. B. api.beispiel.de und shop.beispiel.de) auf einem einzelnen Load-Balancer hosten, um Kosten zu sparen.
  • Anfragen anhand des URL-Pfads an verschiedene Dienste weiterleiten, z. B. / an den Frontend-Arbeitslast und /api/v1 an den Backend-Arbeitslast.
  • Sichern Sie Ihre Anwendung mit HTTPS, indem Sie TLS-Zertifikate verwalten.
  • Neue Funktionen lassen sich mithilfe von Canary-Releases stufenweise bereitstellen. Dabei wird ein kleiner Teil des Traffics an eine neue Version gesendet, bevor ein vollständiger Rollout erfolgt.

Lösung:Verwenden Sie die Gateway API. Die GKE-Implementierung der Gateway API bietet eine leistungsstarke und standardisierte Möglichkeit, diesen Nord-Süd-Traffic zu verwalten. Sie unterstützt erweiterte Funktionen wie pfadbasiertes Routing, Header-Abgleich und Traffic-Aufteilung. Weitere Informationen finden Sie unter Gateway API.

Anwendungsfall: Diensterkennung für eine wachsende Anwendung skalieren

Wenn der Traffic und die Komplexität Ihrer auf Mikrodiensten basierenden Anwendung zunehmen, steigt die Anzahl der DNS-Abfragen zwischen Diensten erheblich. Entwickler müssen zwar wissen, wie sie in dieser Umgebung stabile Anwendungen erstellen, aber Plattform- und Betriebsteams sind oft für die Implementierung skalierbarer Netzwerklösungen verantwortlich.

Challenge: Dienst-zu-Dienst-Kommunikation aktivieren

Szenario:Pods benötigen eine zuverlässige Möglichkeit, andere Dienste zu finden.

Lösung:GKE bietet einen clusterinternen DNS-Dienst (z. B. kube-dns oder Cloud DNS), der stabile DNS-Namen für Dienste auflöst und so eine zuverlässige Pod-zu-Pod-Kommunikation ermöglicht. Weitere Informationen finden Sie unter Service Discovery und DNS.

Herausforderung: DNS-Leistung umfassend verbessern

Szenario:Hohes Abfragevolumen führt zu Verzögerungen bei der Suche.

Lösung:Aktivieren Sie NodeLocal DNSCache. Jeder Knoten speichert DNS-Abfragen lokal im Cache, wodurch die Latenz verringert wird. Weitere Informationen finden Sie unter NodeLocal DNSCache einrichten – Übersicht.

Herausforderung: Dienstermittlung in der gesamten VPC bereitstellen

Szenario:Compute Engine-VMs müssen auf Dienste im Cluster zugreifen.

Lösung:Integrieren Sie Cloud DNS, damit DNS-Einträge für Dienste in der gesamten VPC aufgelöst werden. Weitere Informationen finden Sie unter Cloud DNS für GKE verwenden.

Anwendungsfall: Mehrstufige Anwendung sichern

In diesem Anwendungsfall sind Sie Teil eines Platform Engineering-Teams, das eine dreistufige Anwendung (Frontend, Abrechnung, Datenbank) bereitstellt. Sie müssen die Zero-Trust-Kommunikation erzwingen.

Challenge: Strenge Verkehrsregeln durchsetzen

Szenario:Nur bestimmte Dienste sollen miteinander kommunizieren.

Lösung:Aktivieren Sie die Durchsetzung von Netzwerkrichtlinien und wenden Sie default deny-Richtlinien an. Definieren Sie dann explizite Zulassungsregeln (z. B. Frontend lässt Traffic zur Abrechnung zu, Abrechnung lässt Traffic zur Datenbank zu). Weitere Informationen finden Sie unter Netzwerkrichtlinien für Anwendungen konfigurieren.

Herausforderung: Netzwerkrichtlinien prüfen und bestätigen

Szenario:Für die Sicherheit sind ein Nachweis der Durchsetzung und Transparenz erforderlich.

Lösung:Aktivieren Sie das Logging von Netzwerkrichtlinien, um zugelassene und abgelehnte Verbindungen aufzuzeichnen. Weitere Informationen finden Sie unter Netzwerkrichtlinienprotokollierung verwenden.

Herausforderung: Dienst privat für Nutzer verfügbar machen

Szenario:Ein Backend-Dienst wie eine Datenbank oder API muss für Nutzer in anderen VPC-Netzwerken zugänglich sein, ohne dem öffentlichen Internet ausgesetzt zu sein oder sich mit der Komplexität des VPC-Peerings auseinandersetzen zu müssen.

Lösung:Verwenden Sie Private Service Connect, um den Dienst zu veröffentlichen. Nutzer können dann einen PSC-Endpunkt in ihrer eigenen VPC erstellen, um privat und sicher auf Ihren Dienst zuzugreifen. Weitere Informationen finden Sie unter Dienste mit Private Service Connect bereitstellen.

Anwendungsfall: Hohe Verfügbarkeit über mehrere Cluster hinweg erreichen

In diesem Anwendungsfall sind Sie ein SRE, der Arbeitslasten für ein E-Commerce-Unternehmen in mehreren GKE-Clustern in verschiedenen Regionen ausführt, um die Zuverlässigkeit zu verbessern.

Challenge: Clusterübergreifende Kommunikation aktivieren

Szenario:Dienste in einem Cluster müssen Dienste in einem anderen Cluster erkennen und aufrufen.

Lösung:Verwenden Sie GKE-Multi-Cluster-Dienste (MCS), um einen globalen DNS-Namen zu erstellen und Traffic automatisch an fehlerfreie Backends weiterzuleiten. Weitere Informationen finden Sie unter Multi-Cluster-Dienste.

Challenge: Ausfallsicheren Failover gewährleisten

Szenario:Wenn ein regionaler Dienst nicht mehr verfügbar ist, muss der Traffic automatisch umgeleitet werden.

Lösung:MCS bietet eine zustandsbezogene Diensterkennung, mit der Clients einen einzelnen DNS-Namen in einen fehlerfreien Backend-Dienst im nächstgelegenen verfügbaren Cluster auflösen können. Dieser Ansatz ermöglicht ein ausfallsicheres Failover. Weitere Informationen finden Sie unter Multi-Cluster-Dienste.

Anwendungsfall: Sichere und effiziente mehrmandantenfähige GKE-Umgebung erstellen

Als Teil eines Plattform-Engineering-Teams stellen Sie mehreren Anwendungsteams GKE-Cluster zur Verfügung. Sie müssen die Netzwerksteuerung zentralisieren, IP-Adressen sparen und strenge Sicherheitsmaßnahmen durchsetzen.

Herausforderung: Netzwerksteuerung zentralisieren

Szenario:Mehrere App-Teams benötigen eigene Cluster, aber die Netzwerkfunktionen müssen zentral verwaltet werden.

Lösung:Verwenden Sie freigegebene VPC. Netzwerkressourcen befinden sich in einem Hostprojekt, App-Cluster werden jedoch in Dienstprojekten ausgeführt. Weitere Informationen finden Sie unter Cluster mit freigegebener VPC konfigurieren.

Herausforderung: Begrenzte IP-Adressen effizient verwalten

Szenario:Der IP-Adressraum ist begrenzt und muss effizient genutzt werden.

Lösung:Passen Sie die maximale Anzahl von Pods pro Knoten an und verwenden Sie bei Bedarf Bereiche außerhalb von RFC 1918 für Pod-IP-Adressen. Weitere Informationen finden Sie unter IP-Adressmigration in GKE verwalten.

Aufgabe: Moderne, sichere Datenebene verwenden und Cluster mit der neuen Datenebene bereitstellen

Szenarien:

  • Unternehmen benötigen hohe Leistung und integrierte Richtliniendurchsetzung, um anspruchsvolle Arbeitslasten und eine Zero-Trust-Sicherheitsstrategie zu unterstützen. Beispielsweise führen Sie möglicherweise umfangreiche Mikrodienste aus, die empfindlich auf Netzwerklatenz reagieren, oder Sie müssen strenge Sicherheitsgrenzen zwischen Anwendungen in einem Mandantencluster erzwingen, um regulatorische Compliance-Anforderungen zu erfüllen.
  • Cluster müssen so konfiguriert sein, dass sie einen modernen Netzwerk-Dataplane für hohe Leistung und Sicherheit verwenden. Außerdem müssen sie in der zentral verwalteten Netzwerkstruktur der Organisation bereitgestellt werden.

Lösung:Verwenden Sie GKE Dataplane V2, das auf eBPF basiert und eine hohe Leistung sowie eine integrierte Durchsetzung von Netzwerkrichtlinien bietet. Weitere Informationen finden Sie unter GKE Dataplane V2.

Anwendungsfall: Traffic beobachten und Fehler beheben

Als SRE untersuchen Sie, warum ein Abrechnungsdienst keine Verbindung zu einem Zahlungsdienst herstellen kann.

Herausforderung: Verbindungsprobleme beheben

Szenario:Pakete werden verworfen, aber die Ursache ist unklar.

Lösung:Aktivieren Sie die Beobachtbarkeit von GKE Dataplane V2. Metriken wie hubble_drop_total bestätigen, dass Pakete abgelehnt werden. Weitere Informationen finden Sie unter Fehlerbehebung mit Hubble.

Herausforderung: Ursache für verworfene Pakete ermitteln

Szenario:Nachdem Sie bestätigt haben, dass Netzwerkpakete verworfen werden (z. B. mit hubble_drop_total), ermitteln Sie, welche Netzwerkrichtlinie den Traffic zwischen Diensten blockiert.

Lösung:Verwenden Sie die Hubble-Befehlszeile oder die Hubble-Benutzeroberfläche, um Abläufe zu verfolgen. Die Hubble-Benutzeroberfläche bietet eine visuelle Darstellung des Traffics und hebt die falsch konfigurierte Richtlinie hervor, die die Verbindung ablehnt. Anhand dieser Visualisierung kann das Team die Ursache des Problems schnell ermitteln und die Richtlinie korrigieren. Weitere Informationen finden Sie unter Traffic mit GKE Dataplane V2 beobachten.

End-to-End-Anwendungsfall: Sichere Einzelhandelsanwendung bereitstellen und skalieren

In diesem End-to-End-Szenario erstellt ein Plattformtechnikteam eine standardisierte GKE-Plattform für mehrere Anwendungsteams. Das Team stellt eine dreistufige Einzelhandelsanwendung (Frontend, Abrechnung, Datenbank) bereit und optimiert sie. Dazu gehören das Sichern, Skalieren und Optimieren der Leistung für Machine-Learning-Arbeitslasten sowie die Integration fortschrittlicher Sicherheitsanwendungen.

Das folgende Diagramm veranschaulicht die End-to-End-Architektur einer sicheren, mehrstufigen Einzelhandelsanwendung, die in GKE bereitgestellt wird. Die Architektur entwickelt sich in mehreren Phasen:

  • Phase 1:Richten Sie eine grundlegende Konfiguration mit freigegebene VPC und GKE Dataplane V2 ein.
  • Phase 2:Anwendung mithilfe der Gateway API und Multi-Cluster-Diensten für hohe Verfügbarkeit bereitstellen.
  • Phase 3:ML-Aufgaben mit gVNIC und Tier 1-Netzwerken beschleunigen.
  • Phase 4:Stellen Sie erweiterte Sicherheitsanwendungen mit Unterstützung für mehrere Netzwerke bereit.
Diagramm mit der End-to-End-Architektur für eine sichere, mehrstufige Einzelhandelsanwendung in GKE, in dem Netzwerkkomponenten in sechs Phasen der Bereitstellung und Skalierung dargestellt sind.
Abbildung 1. Eine End-to-End-Architektur für eine sichere, mehrstufige Einzelhandelsanwendung in GKE, in der die wichtigsten Netzwerkkomponenten hervorgehoben werden, die in jeder Phase der Bereitstellung und Skalierung verwendet werden. Die Details der einzelnen Phasen werden in den folgenden Abschnitten beschrieben.

Phase 1: Plattformgrundlage schaffen

Herausforderung:Zentralisieren Sie das Netzwerk für mehrere Anwendungsteams und weisen Sie genügend IP-Adressen zu, um die Skalierung zu bewältigen.

Lösung:

Phase 2: Anwendung bereitstellen und schützen

Herausforderung:Zuverlässige Dienst-zu-Dienst-Kommunikation sicherstellen und Zero-Trust-Sicherheit erzwingen.

Lösung:

Phase 3: Anwendung freigeben und für Wachstum skalieren

Herausforderung:Externen Zugriff ermöglichen und die DNS-Lookup-Latenz bei zunehmendem Traffic reduzieren.

Lösung:

Phase 4: Hochverfügbarkeit erreichen und Probleme beheben

Herausforderung:Regionales Failover sicherstellen und Fehler bei verlorenem Traffic beheben.

Lösung:

Phase 5: Arbeitslasten für maschinelles Lernen beschleunigen

Herausforderung:Netzwerkengpässe beim GPU-basierten Modelltraining beseitigen.

Lösung:

  • Aktivieren Sie gVNIC für eine höhere Bandbreite.
  • Konfigurieren Sie Tier 1-Netzwerke auf kritischen Knoten, um den maximalen Durchsatz zu erzielen.

Phase 6: Erweiterte Sicherheitsgeräte bereitstellen

Herausforderung:Bereitstellung einer Drittanbieter-Firewall und eines IDS mit separatem Management- und Datenebenen-Traffic bei extrem niedriger Latenz.

Lösung:

Nächste Schritte