Multi-Cluster-Gateways

In diesem Dokument wird beschrieben, wie Gateways mit mehreren Clustern in Google Kubernetes Engine (GKE) funktionieren. Multi-Cluster-Gateways sind eine leistungsstarke Netzwerklösung, mit der Sie den Traffic für Dienste verwalten können, die in mehreren GKE-Clustern bereitgestellt werden.

Dieses Dokument richtet sich an Cloud-Architekten und Netzwerkspezialisten, die das Netzwerk ihrer Organisation entwerfen und erstellen. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud Inhalten verweisen, finden Sie unter Häufig verwendete GKE Enterprise-Nutzerrollen und -Aufgaben.

Übersicht

Multi-Cluster-Gateways werden mit den Kubernetes Gateway API-Ressourcen konfiguriert. Der GKE-Gateway-Controller überwacht diese Ressourcen (Gateway, HTTPRoute) und stellt die erforderlicheGoogle Cloud globale Load-Balancing-Infrastruktur automatisch bereit und verwaltet sie. Diese Infrastruktur bietet eine erweiterte Traffic-Verwaltung für Dienste, die in mehreren GKE-Clustern innerhalb einer Flotte bereitgestellt werden. Multi-Cluster-Gateways nutzen die globale Load-Balancing-Infrastruktur von Google Cloud, um einen einzigen, einheitlichen Einstiegspunkt für Ihre Anwendungen bereitzustellen. Dieser Ansatz bietet folgende Vorteile:

  • Vereinfacht die Verwaltung
  • Höhere Zuverlässigkeit
  • Ermöglicht erweiterte Funktionen zur Trafficverwaltung

Funktionen zur Traffic-Verwaltung

Multi-Cluster-Gateways bieten Ihnen erweiterte Funktionen zum Verwalten von Traffic über mehrere Cluster hinweg. Sie können ausgefeilte Routingstrategien wie stufenweise Rollouts und Blau/Grün-Strategien implementieren, um Änderungen sicher bereitzustellen. Für eine detaillierte Steuerung können Sie den Header-basierten Abgleich verwenden, um Änderungen mit einem kleinen Prozentsatz des Traffics zu testen, oder den Traffic nach Gewicht aufteilen, um Anfragen schrittweise zwischen verschiedenen Cluster-Back-Ends zu verschieben.

Mit Multi-Cluster-Gateways können Sie auch Traffic spiegeln. Dabei wird eine Kopie von Live-Nutzeranfragen an einen neuen Dienst gesendet, um die Leistung zu testen, ohne dass sich dies auf die Nutzer auswirkt. Um die Zuverlässigkeit zu gewährleisten und Überlastungen zu vermeiden, unterstützen Multi-Cluster-Gateways zustandsbasiertes Failover und kapazitätsbasiertes Load-Balancing. Dadurch werden Anfragen basierend auf der definierten Kapazität Ihrer Dienste verteilt.

Funktionsweise von Multi-Cluster-Gateways

Alle GKE-Cluster, die an einer Multi-Cluster-Gateway-Einrichtung beteiligt sind, müssen bei einer Flotte registriert sein. Eine Flotte bietet eine logische Gruppierung von Clustern, die eine einheitliche Verwaltung und Kommunikation zwischen den Clustern ermöglicht. Ein GKE-Cluster in der Flotte wird als Konfigurationscluster festgelegt.

Der Konfigurationscluster fungiert als zentraler Kontrollpunkt für Ihre Multi-Cluster-Gateway-Konfiguration. Sie stellen alle Multi-Cluster-Gateway-API-Ressourcen wie Gateway und HTTPRoute nur in diesem dafür vorgesehenen Cluster bereit. Der GKE-Gateway-Controller überwacht den Kubernetes API-Server des Konfigurationsclusters auf diese Ressourcen.

Berücksichtigen Sie bei der Auswahl eines Konfigurationsclusters einen hochverfügbaren GKE-Cluster, z. B. einen regionalen Cluster. So kann der Controller Updates für Ihre Gateway API-Ressourcen kontinuierlich abgleichen.

Der Multi-Cluster-Gateway-Controller verwendet Multi-Cluster-Dienste (MCS), um Kubernetes-Dienste in mehreren GKE-Clustern innerhalb einer Flotte zu ermitteln und darauf zuzugreifen. MCS ist ein GKE-Feature, das die Diensterkennung und Konnektivität zwischen Diensten ermöglicht, die in verschiedenen GKE-Clustern innerhalb einer Flotte ausgeführt werden.

MCG verwendet MCS, um zu ermitteln, welche Dienste in welchen Clustern verfügbar sind, um externen Traffic an die Dienste weiterzuleiten. Der MCG-Controller verwendet MCS-API-Ressourcen, um Pods in einem einzelnen Service zu gruppieren, der adressierbar ist und sich über mehrere Cluster erstreckt.

Basierend auf den Konfigurationen, die Sie in den Gateway API-Ressourcen definiert haben, stellt der GKE-Gateway-Controller entweder einen externen Application Load Balancer oder einen internen Application Load Balancer bereit. Dieser Load-Balancer dient als Frontend für Ihre Anwendung und verteilt den Traffic direkt auf die fehlerfreien Pods in Ihrer Flotte, unabhängig von ihrem Standort.

Die folgenden allgemeinen Schritte beschreiben den Prozess zum Bereitstellen eines Multi-Cluster-Gateways:

  1. Gateway definieren: In einer Multi-Cluster-Gateway-Einrichtung erstellen Sie eine Gateway-Ressource, die den Einstiegspunkt für Ihren Traffic im Konfigurationscluster definiert. Die Gateway-Ressource gibt eine GatewayClass an, die eine Vorlage für einen bestimmten Load Balancer-Typ ist, z. B. einen globalen externen Application Load Balancer oder einen regionalen internen Application Load Balancer. In GKE werden mit den folgenden GatewayClasses Multi-Cluster-Gateways bereitgestellt:

    • gke-l7-global-external-managed-mc: Stellt einen globalen externen Application Load Balancer bereit.
    • gke-l7-regional-external-managed-mc: Stellt einen regionalen externen Application Load Balancer bereit.
    • gke-l7-cross-regional-internal-managed-mc: Stellt einen internen Application Load Balancer bereit.
    • gke-l7-rilb-mc: Stellt einen internen Application Load Balancer bereit.
    • gke-l7-gxlb-mc: Stellt einen klassischen Application Load Balancer bereit.

    Das Gateway definiert auch, wie der Load-Balancer auf eingehenden Traffic wartet, indem es angibt, welche Netzwerk-Listener (Ports und Protokolle) verfügbar gemacht werden sollen. Weitere Informationen zu Gateway-Klassen, die von GKE unterstützt werden, finden Sie unter Multi-Cluster-Services.

  2. HTTPRoutes an das Gateway anhängen: HTTPRoute-Ressourcen definieren, wie eingehender HTTP/S-Traffic an bestimmte Back-End-Dienste weitergeleitet wird. HTTPRoutes werden an Gateway-Ressourcen angehängt und geben Regeln basierend auf Hostnamen, Pfaden, Headern und mehr an. HTTPRoute unterstützt auch erweiterte Funktionen zur Trafficverwaltung wie Traffic-Aufteilung und Traffic-Spiegelung.

  3. Load Balancer erstellen: Wenn Sie Gateway- und HTTPRoute-Ressourcen bereitstellen, interpretiert der GKE-Gateway-Controller diese API-Objekte und konfiguriert die erforderliche Google Cloud Load-Balancing-Infrastruktur dynamisch. Der Load-Balancer leitet den Traffic dann an die richtigen Pods weiter, unabhängig davon, in welchem Cluster sich die Pods befinden. Dieses Verfahren bietet eine äußerst effiziente und skalierbare Möglichkeit, Traffic weiterzuleiten.

Datenverkehr

Das folgende Diagramm veranschaulicht, wie ein Multi-Cluster-Gateway als zentraler Load-Balancer für Anwendungen fungiert, die in zwei GKE-Clustern in verschiedenen Regionen ausgeführt werden:

Architektur von Multi-Cluster-Gateways in GKE.
Abbildung : Multi-Cluster-Gateway-Architektur

Das Verhalten des Load-Balancers wird anhand der Regeln konfiguriert, die in Ihren HTTPRoute-Ressourcen definiert sind. Wenn Nutzer-Traffic an der IP-Adresse des bereitgestellten Google Cloud Load Balancers (wie in Ihrer Gateway-Ressource definiert) eingeht, leitet der Load Balancer, der ein von Google verwalteter Proxy ist, den Traffic weiter. Dieser Proxy (entweder ein Google Front End-Proxy oder ein regionaler Proxy) leitet den Traffic anhand der folgenden Kriterien an den entsprechenden Back-End-Dienstendpunkt im richtigen GKE-Cluster weiter:

  • Systemdiagnosen
  • Regeln zur Traffic-Aufteilung
  • Kapazität

Der Traffic wird direkt an den optimalen Pod im ausgewählten Cluster weitergeleitet.

Nächste Schritte