In diesem Abschnitt wird beschrieben, wie Sie einen oder mehrere Messwerte von einem Pod oder einer Arbeitslast an Ihren Load-Balancer senden.
Diese Messwerte stammen von dem Dienst oder der Anwendung, die Sie ausführen. Von der vLLM Engine bereitgestellte Messwerte
Der Load-Balancer kann diese Daten dann mit auslastungsbasiertem Load-Balancing verwenden, um Arbeitslasten effizienter zu verteilen. Sie können dieses Feature beispielsweise verwenden, um die Regionen mit einer höheren Arbeitslast zu überwachen und den Load Balancer dann den Traffic an die Region mit den verfügbaren Ressourcen umleiten zu lassen. Im vLLM-Beispiel ist gpu_cache_usage_perc
eine Metrik, die sich für die Nachverfolgung der Auslastung eignet.
Voraussetzungen
Für die Pods gelten die folgenden Anforderungen.
- GKE 1.34.1-gke.1127000 oder höher mit Clustern im Rapid Channel.
- Die Gateways API ist aktiviert.
- Horizontales Pod-Autoscaling mit dem Leistungsprofil verwenden.
Für die Messwerte gelten die folgenden Anforderungen.
- Messwerte müssen über einen HTTP-Endpunkt zugänglich sein.
- Das Format der Messwerte muss dem Prometheus-Standard entsprechen.
Für Load-Balancer gelten Einschränkungen für Messwertnamen. Der Name darf beispielsweise nicht länger als 64 Zeichen sein. Eine vollständige Liste der Einschränkungen finden Sie in der API-Referenz zu
BackendService
unter den Details zum Feldbackends[].customMetrics[].name
.Wenn der Messwert Ihres Dienstes nicht diesen Einschränkungen entspricht, können Sie ihn mit dem Feld
exportName
umbenennen.Es werden nur Messwerte für Anzeigen zwischen 0 und 1 unterstützt. Der Wert 1 entspricht einer Auslastung von 100%.
Messwertlabels werden ignoriert und können daher nicht verwendet werden, um zwischen Messwerten zu unterscheiden. Achten Sie darauf, dass für Ihre Arbeitslast nicht derselbe Messwert mit mehreren Labels verfügbar ist.
Pro Cluster können maximal 10 Messwerte verfügbar gemacht werden. Für andere Dienste gelten eigene Limits. Weitere Informationen finden Sie beispielsweise unter Limits und Anforderungen für Load Balancer. Ein Cluster kann mehrere Load-Balancer verwenden.
Messwerte für Load-Balancing bereitstellen
Wählen Sie einen Messwert aus, der verfügbar gemacht werden soll. Sie können einen beliebigen Messwert auswählen, der von Ihrem Server bereitgestellt wird und die Anforderungen im vorherigen Abschnitt erfüllt.
Fügen Sie die folgende benutzerdefinierte Ressource hinzu und ersetzen Sie die Details, die für Ihren Messwert und Pod spezifisch sind.
apiVersion: autoscaling.gke.io/v1beta1 kind: AutoscalingMetric metadata: name: NAME namespace:NAMESPACE spec: selector: matchLabels: name: APP_LABEL_NAME endpoints: - port: METRIC_PORT path: METRIC_PATH metrics: - name: METRIC exportName: METRIC_NEW_NAME
Ersetzen Sie die folgenden Werte durch die Werte für Ihre Arbeitslast:
NAME
: der Name des AutoscalingMetric-Objekts.NAMESPACE
: der Namespace, in dem sich die Pods befinden.APP_LABEL_NAME
: Das für den Pod verwendete Label.METRIC_PORT
: die Portnummer.METRIC_PATH
: Der Pfad zum Messwert. Prüfen Sie den Pfad, der von Ihrem Dienst oder Ihrer Anwendung verwendet wird. Dieser Pfad ist oft/metrics
.METRIC
: der Name des Messwerts, den Sie bereitstellen.Optional:
METRIC_NEW_NAME
: Mit diesem Feld können Sie den Messwert umbenennen. Wenn der Messwertname nicht den vom Load-Balancer festgelegten Namensbeschränkungen entspricht, können Sie ihn mit diesem Feld in einen gültigen Namen umbenennen.Eine vollständige Liste der Einschränkungen finden Sie in der API-Referenz zu
BackendService
unter den Details zum Feldbackends[].customMetrics[].name
.
Wenden Sie die Ressource mit dem folgenden Befehl an:
kubectl apply -f FILE_NAME.yaml
Ersetzen Sie
FILE_NAME
durch den Namen der YAML-Datei.Nachdem Sie die benutzerdefinierte Ressource hinzugefügt haben, wird der Messwert an die Autoscaling API übertragen. Der Messwert wird alle paar Sekunden gelesen und an den Load-Balancer gesendet.
Wenn Sie einen zweiten Messwert verfügbar machen möchten, folgen Sie derselben Anleitung, um eine weitere benutzerdefinierte Ressource zu erstellen.
Nachdem Sie die Messwerte für den Load-Balancer verfügbar gemacht haben, können Sie ihn so konfigurieren, dass er diese Messwerte verwendet. Weitere Informationen finden Sie unter Load-Balancer für die Verwendung benutzerdefinierter Messwerte konfigurieren.
Weitere Informationen zum Arbeiten mit dem Load-Balancer finden Sie unter Auslastungsbasiertes Load-Balancing für GKE-Dienste konfigurieren.
Fehlerbehebung bei Messwerten, die für den Load-Balancer verfügbar gemacht werden
So prüfen Sie, ob die Messwerte korrekt für den Load-Balancer verfügbar gemacht werden:
- Prüfen Sie die Logs im GKE Metrics Agent. Wenn beim Versuch, die Messwerte verfügbar zu machen, ein Fehler aufgetreten ist, wird dies möglicherweise in den Logs angezeigt. Weitere Informationen zum Suchen nach Fehlern finden Sie unter Fehlerbehebung bei Systemmesswerten.
- Sie können den Load Balancer im Probelaufmodus verwenden, um sich alle empfangenen Messwerte anzusehen. Weitere Informationen zum Testen der Messwerte mit dem Flag
dryRun
finden Sie unter Load-Balancer für die Verwendung benutzerdefinierter Messwerte konfigurieren.
Nächste Schritte
- Weitere Informationen zum nutzungsbasierten Load-Balancing finden Sie unter Nutzungsbasierte Load-Balancer für GKE-Dienste.
- Nutzungsbasiertes Load-Balancing für GKE-Dienste konfigurieren