Multi-Cluster-Gateways

In diesem Dokument wird beschrieben, wie Multi-Cluster-Gateways 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 automatisch die erforderliche Google Cloud globale Load-Balancing-Infrastruktur bereit und verwaltet sie. Diese Infrastruktur bietet erweiterte Traffic-Verwaltung für Dienste, die in mehreren GKE-Clustern innerhalb einer Flotte bereitgestellt werden. Multi-Cluster-Gateways verwenden Google Cloud's globale Load-Balancing-Infrastruktur von , um einen einzigen, einheitlichen Einstiegspunkt für Ihre Anwendungen bereitzustellen. Dieser Ansatz bietet folgende Vorteile:

  • Vereinfacht die Verwaltung
  • Verbessert die Zuverlässigkeit
  • Ermöglicht erweiterte Funktionen zur Traffic-Verwaltung

Funktionen zur Traffic-Verwaltung

Multi-Cluster-Gateways bieten erweiterte Funktionen zur Verwaltung des Traffics über mehrere Cluster hinweg. Sie können ausgefeilte Routing-Strategien wie phasenweise Rollouts und Blau/Grün-Strategien implementieren, um Änderungen sicher bereitzustellen. Für eine detaillierte Steuerung können Sie headerbasierte Übereinstimmungen verwenden, um Änderungen mit einem kleinen Prozentsatz des Traffics zu testen, oder den Traffic nach Gewicht aufteilen, um Anfragen schrittweise zwischen verschiedenen Cluster-Backends 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 die Nutzer zu beeinträchtigen. Um Zuverlässigkeit zu gewährleisten und Überlastungen zu vermeiden, unterstützen Multi-Cluster-Gateways gesundheitsbasiertes Failover und kapazitätsbasiertes Load-Balancing, bei dem Anfragen basierend auf der definierten Kapazität Ihrer Dienste verteilt werden.

Funktionsweise von Multi-Cluster-Gateways

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

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

Wählen Sie als Konfigurationscluster einen regionalen Cluster oder einen anderen hochverfügbaren GKE-Cluster aus. So können Updates an Ihren Gateway API-Ressourcen kontinuierlich vom Controller abgeglichen werden.

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 Dienst zu gruppieren, der adressierbar ist und mehrere Cluster umfasst.

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 an 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 Konfigurations cluster definiert. Die Gateway-Ressource gibt eine GatewayClass an, die eine Vorlage für einen bestimmten Typ von Load-Balancer ist, z. B. einen globalen externen Application Load Balancer oder einen regionalen internen Application Load Balancer. In GKE stellen die folgenden GatewayClasses Multi-Cluster-Gateways bereit:

    • 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 GatewayClasses, die von GKE unterstützt werden, finden Sie unter Multi-Cluster Dienste.

  2. HTTPRoutes an das Gateway anhängen: HTTPRoute-Ressourcen definieren, wie eingehender HTTP/S-Traffic an bestimmte Backend-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 Traffic-Verwaltung 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 wiederum dynamisch die erforderliche Google Cloud Load- Balancing-Infrastruktur. Der Load-Balancer leitet den Traffic dann an die richtigen Pods weiter, unabhängig davon, in welchem Cluster sich die Pods befinden. Dieser Prozess bietet eine hocheffiziente und skalierbare Möglichkeit, Traffic weiterzuleiten.

Datenverkehr

Das folgende Diagramm zeigt, 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 Nutzertraffic an der IP-Adresse des bereitgestellten Google Cloud Load-Balancers ankommt (wie in Ihrer Gateway-Ressource definiert), leitet der Load-Balancer, ein von Google verwalteter Proxy, den Traffic weiter. Dieser Proxy (entweder ein Google Front End-Proxy oder ein regionaler Proxy) leitet den Traffic basierend auf den folgenden Kriterien an den entsprechenden Backend-Dienstendpunkt im richtigen GKE-Cluster weiter:

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

Der Traffic fließt direkt zum optimalen Pod im ausgewählten Cluster.

Nächste Schritte