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

  • Vereinfachte Verwaltung
  • Verbessert die Zuverlässigkeit
  • Ermöglicht erweiterte Funktionen zur Trafficverwaltung

Funktionen zur Traffic-Verwaltung

Multi-Cluster-Gateways bieten 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 headerbasierten Abgleich 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 der Live-Nutzeranfragen an einen neuen Dienst gesendet, um die Leistung zu testen, ohne die Nutzer zu beeinträchtigen. Um die Zuverlässigkeit zu gewährleisten und Überlastungen zu vermeiden, unterstützen Multi-Cluster-Gateways zustandsbasiertes 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 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 dient 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.

Wenn Sie einen Konfigurationscluster auswählen, sollten Sie einen regionalen Cluster oder einen anderen hochverfügbaren GKE-Cluster in Betracht ziehen. So wird sichergestellt, dass Aktualisierungen Ihrer Gateway API-Ressourcen kontinuierlich vom Controller abgeglichen werden können.

Der Multi-Cluster-Gateway-Controller verwendet Multi-Cluster-Services (MCS), um Kubernetes-Dienste in mehreren GKE-Clustern innerhalb einer Flotte zu erkennen und darauf zuzugreifen. MCS ist ein GKE-Feature, das Service Discovery und Konnektivität zwischen Services 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 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 deren 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 Multi-Cluster-Gateways mit den folgenden GatewayClasses 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) freigegeben werden sollen. Weitere Informationen zu Gateway-Klassen, 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 sind 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 die Aufteilung des Traffics und Traffic-Spiegelung.

  3. Load-Balancer erstellen: Wenn Sie Gateway- und HTTPRoute-Ressourcen bereitstellen, interpretiert der GKE Gateway-Controller diese API-Objekte und konfiguriert 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. Dieses Verfahren bietet eine hocheffiziente 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 Nutzertraffic an der IP-Adresse des bereitgestellten Google Cloud -Load-Balancers (wie durch Ihre Gateway-Ressource definiert) ankommt, 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 Backend-Dienstendpunkt im richtigen GKE-Cluster weiter:

  • Systemdiagnosen
  • Regeln zur Aufteilung des Traffics
  • Kapazität

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

Nächste Schritte