In einer Multi-Cluster-Umgebung für das Google Kubernetes Engine (GKE) Inference Gateway können Sie verschiedene Backend-Konfigurationen auf Dienste anwenden, die in mehreren Clustern bereitgestellt werden. Sie können beispielsweise unterschiedliche maximale Anfrageraten oder Kapazitätsskalierer für Back-Ends in verschiedenen Regionen oder Umgebungen festlegen.
Um dieses Dokument zu verstehen, sollten Sie mit Folgendem vertraut sein:
- KI‑/ML-Orchestrierung in GKE.
- Terminologie für generative KI
- GKE-Netzwerkkonzepte, einschließlich Diensten, GKE Multi Cluster Ingress und der GKE Gateway API.
- Load-Balancing inGoogle Cloud, insbesondere die Interaktion von Load-Balancern mit GKE.
Dieses Dokument richtet sich an die folgenden Personen:
- ML-Entwickler, Plattformadministratoren und ‑operatoren sowie Daten- und KI-Spezialisten, die daran interessiert sind, Kubernetes-Container-Orchestrierungsfunktionen für die Bereitstellung von KI‑/ML-Arbeitslasten zu nutzen.
- Cloud-Architekten oder Netzwerkspezialisten, die mit Kubernetes-Netzwerken interagieren.
Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir inGoogle Cloud Inhalten verweisen, finden Sie unter Häufig verwendete GKE Enterprise-Nutzerrollen und -Aufgaben.
So funktionieren GCPBackendPolicy-Bereiche
Mit dem Feld scopes in GCPBackendPolicy können Sie Back-End-Konfigurationen an die spezifischen Cluster anpassen, in denen Ihre Back-Ends ausgeführt werden. Sie können verschiedene Einstellungen auf Back-Ends in unterschiedlichen Umgebungen oder Regionen anwenden. So haben Sie eine detaillierte Kontrolle über Ihre verteilten KI-/ML-Arbeitslasten. In den folgenden Abschnitten wird erläutert, wie Sie Ressourcen ausrichten, Richtlinienbereiche definieren und Konflikte beheben.
Inferenz-Gateway-Ressourcen als Ziel festlegen
Wenn Sie Inference Gateway-Richtlinien in einer GKE-Multi-Cluster-Umgebung verwenden möchten, muss das Feld targetRef von GCPBackendPolicy auf eine GCPInferencePoolImport-Ressource verweisen:
targetRef:
group: networking.gke.io
kind: GCPInferencePoolImport
name: example
Definition des Richtlinienbereichs
Mit dem Feld scopes in GCPBackendPolicy können Sie verschiedene Backend-Einstellungen auf bestimmte Backend-Gruppen anwenden. Wenn Sie Konfigurationsobjekte in default.scopes definieren, können Sie mit Clusterlabels Back-Ends präzise ausrichten und bestimmte Einstellungen anwenden. Sie können beispielsweise eindeutige Kapazitätslimits oder Anforderungsraten für Backends in verschiedenen Regionen oder Clustern festlegen.
Sie können dieselben Felder auf Back-End-Ebene (z. B. maxRatePerEndpoint) nicht sowohl im Hauptabschnitt default als auch in den default.scopes-Einträgen angeben.
Wenn Sie das versuchen, wird die Richtlinie abgelehnt. So wird für klare und einheitliche Konfigurationen gesorgt.
Konfliktlösung
Wenn ein Backend mehreren Bereichen entspricht, wendet das System die folgenden Regeln an, um ein vorhersehbares Verhalten zu gewährleisten:
- Priorisierter Abgleich:Wenn ein Backend mit mehreren Selektoren in Ihrer
scopes-Liste übereinstimmt, wendet das System nur die Einstellungen des ersten übereinstimmenden Selektors an. Ordnen Sie Ihre Bereiche vom spezifischsten zum allgemeinsten, damit die gewünschte Konfiguration wirksam wird. - Präzises Targeting:Wenn ein einzelner Selektor mehrere Labels enthält (z. B.
gke.io/region: us-central1undenv: prod), muss das Backend alle diese Labels erfüllen, damit die Konfiguration des Bereichs angewendet wird. Mit diesem Ansatz können Sie Back-Ends anhand mehrerer Kriterien genau ausrichten.
Unterstützte Felder pro Back-End
In der folgenden Tabelle sind die Felder auf Backend-Ebene aufgeführt, die Sie anpassen können, um das Backend-Verhalten in verschiedenen Umgebungen oder Regionen zu steuern.
| Feldname | Beschreibung | Beispielkonfiguration |
|---|---|---|
backendPreference |
Gibt an, ob das Backend beim Capacity Chasing für multiregionales Load-Balancing bevorzugt (PREFERRED) oder standardmäßig (DEFAULT) verwendet wird. |
backendPreference: PREFERRED |
balancingMode |
Gibt den Ausgleichsalgorithmus an. Unterstützte Werte sind RATE, UTILIZATION oder CUSTOM_METRICS. |
balancingMode: CUSTOM_METRICS |
capacityScalerPercent |
Konfiguriert die Trafficverteilung basierend auf der Kapazität. Dieser Wert ist ein Prozentsatz zwischen 0 und 100, der als Multiplikator für die konfigurierte Zielkapazität des Back-Ends dient. Der Standardwert ist 100%. | capacityScalerPercent: 20 |
customMetrics |
Gibt benutzerdefinierte Messwerte an, die für das Load-Balancing verwendet werden, wenn balancingMode auf CUSTOM_METRICS festgelegt ist. Dieses Feld ist eine Liste von Messwertdefinitionen. |
customMetrics: [{ name: "my-metric", value: 0.8 }] |
maxInFlightPerEndpoint |
Legt die maximale Anzahl gleichzeitiger Anfragen oder Verbindungen pro Endpunkt fest. | maxInFlightPerEndpoint: 100 |
maxRatePerEndpoint |
Legt die maximale Anzahl von Anfragen pro Endpunkt in Anfragen pro Sekunde (RPS) fest. | maxRatePerEndpoint: 50 |
Bereichsauswahl angeben
Mit dem Feld selectors in jedem Bereich können Sie steuern, welche Backends bestimmte Richtlinieneinstellungen erhalten. Sie können Backends anhand ihrer Clusterlabels ausrichten. Dabei können Sie entweder integrierte GKE-Labels oder Ihre eigenen benutzerdefinierten Labels verwenden, um Konfigurationen für verschiedene Gruppen von Backends anzupassen.
kind: GCPBackendPolicy
apiVersion: networking.gke.io/v1
metadata:
name: echoserver-v2
spec:
targetRef:
group: "networking.gke.io"
kind: GCPInferencePoolImport
name: test-inference-pool
default:
balancingMode: IN_FLIGHT # IN_FLIGHT mode is set at the default level
scopes:
- selector:
gke.io/zone: "us-central1-a"
maxInFlightPerEndpoint: 100 # Invalid: maxInFlightPerEndpoint cannot be set within a scope when balancingMode is IN_FLIGHT at the default level
Implizite GKE-Labels
Die folgenden impliziten Labels können als Selektoren verwendet werden. GKE wendet diese Labels automatisch auf Ihre Cluster an:
| Label | Beschreibung | Beispielwert |
|---|---|---|
gke.io/cluster-name |
Der Name des GKE-Clusters. | my-cluster |
gke.io/region |
Die Region, in der sich der Cluster befindet. | us-central1 |
gke.io/zone |
Die Zone, in der sich der Cluster befindet. | us-central1-a |
Benutzerdefinierte Clusterlabels
Benutzerdefinierte Clusterlabels bieten mehr Flexibilität beim Gruppieren und Verwalten Ihrer Back-Ends. Wenn Sie eigene Labels für Ihre GKE-Cluster definieren, können Sie sehr spezifische Selektoren in Ihrem GCPBackendPolicy erstellen, um eindeutige Konfigurationen anzuwenden. Sie können diese Konfigurationen beispielsweise auf Kriterien wie verschiedenen Umgebungen (dev, staging oder prod) oder bestimmten Anwendungsversionen basieren.
Führen Sie den folgenden Befehl aus, um einem GKE-Cluster ein benutzerdefiniertes Label wie environment=production hinzuzufügen:
gcloud container clusters update CLUSTER_NAME \
--region=REGION \
--update-labels=LABEL_KEY=LABEL_VALUE
Ersetzen Sie Folgendes:
CLUSTER_NAME: Der Name Ihres Clusters.REGION: Die Region Ihres Clusters.LABEL_KEY: der Schlüssel für Ihr benutzerdefiniertes Label, z. B.environment.LABEL_VALUE: Der Wert für Ihr benutzerdefiniertes Label, z. B.production.
Anschließend können Sie Backends in diesem Cluster mithilfe des benutzerdefinierten Labelselektors in Ihrer Richtlinie auswählen.
Beispiel für GCPBackendPolicy mit Bereichsselektoren
Im folgenden Beispiel wird ein GCPBackendPolicy definiert, das auf ein GCPInferencePoolImport mit dem Namen experimental ausgerichtet ist. In der Richtlinie werden implizite und benutzerdefinierte Labels verwendet, um Werte für backendPreference, maxRatePerEndpoint und capacityScalerPercent festzulegen.
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: backend-policy
spec:
targetRef:
kind: GCPInferencePoolImport
name: experimental
default:
scopes:
# Selector 1: Targets backends in us-west2, sets capacity to 50%
- capacityScalarPercent: 50
selector:
gke.io/region: us-west2
# Selector 2: Targets backends in clusters labeled 'env: prod'
- maxRatePerEndpoint: 40
selector:
env: prod
# Selector 3: Targets backends in a specific US-Central zone and marks them as PREFERRED
- backendPreference: PREFERRED
maxRatePerEndpoint: 50
selector:
gke.io/cluster-name: my-cluster
gke.io/zone: us-central1-a
Nachdem Sie diese Richtlinie angewendet haben, stellen Sie Folgendes fest:
- Die effektive Kapazität von Backends in Clustern in der Region
us-west2wird auf 50 % skaliert. - Backends in Clustern mit dem Label
env: prodsind auf maximal 40 Anfragen pro Sekunde und Endpunkt beschränkt. - Back-Ends in Clustern, die sich speziell in der Zone
us-central1-abefinden, werden beim Load-Balancing priorisiert (PREFERRED) und haben eine maximale Rate von 50 Anfragen pro Sekunde und Endpunkt.
Nächste Schritte
GCPBackendPolicykonfigurieren- Weitere Informationen zum GKE-Multi-Cluster-Inference-Gateway
- Weitere Informationen zum Einrichten des GKE-Multi-Cluster-Inference-Gateways