Benutzerdefinierte und externe Messwerte für das Autoscaling von Arbeitslasten

Auf dieser Seite werden benutzerdefinierte und externe Messwerte erläutert, mit denen horizontales Pod-Autoscaling die Anzahl der Replikate einer bestimmten Arbeitslast automatisch erhöhen oder verringern kann.

Im Gegensatz zu vertikalem Pod-Autoscaling ändert horizontales Pod-Autoscaling die konfigurierten Anfragen der Arbeitslast nicht. Horizontales Pod-Autoscaling skaliert nur die Anzahl der Replikate.

Mit benutzerdefinierten und externen Messwerten können sich Arbeitslasten, neben der Arbeitslast selbst, an Bedingungen anpassen. Beispielsweise eine Anwendung, die Aufgaben aus einer Warteschlange abruft und ausführt. Ihre Anwendung hat unter Umständen ein Service Level Objective (SLO) für die Verarbeitungszeit einer Aufgabe oder für die Anzahl der ausstehenden Aufgaben. Wenn die Warteschlange wächst, ist es möglich, dass mehr Replikate der Arbeitslast dem SLO Ihrer Arbeitslast entsprechen. Ist die Warteschlange leer oder nimmt schneller als erwartet ab, können Sie unter Umständen Geld sparen, wenn Sie weniger Replikate ausführen und gleichzeitig das SLO Ihrer Arbeitslast einhalten.

Benutzerdefinierte Messwerte und externe Messwerte unterscheiden sich voneinander:

  • Ein benutzerdefinierter Messwert wird von Ihrer in Kubernetes ausgeführten Anwendung gemeldet. Weitere Informationen finden Sie in diesem Thema unter Benutzerdefinierte Messwerte.
  • Ein externer Messwert wird von einer Anwendung oder einem Dienst gemeldet, der nicht auf Ihrem Cluster ausgeführt wird, dessen Leistung sich jedoch auf Ihre Kubernetes-Anwendung auswirkt. Der Messwert könnte zu Informationszwecken aus Cloud Monitoring oder Pub/Sub gemeldet werden.

Sowohl benutzerdefinierte als auch externe Messwerte funktionieren auch auf andere Weise. Beispielsweise kann eine geringe Anzahl von Aufgaben in einer Warteschlange darauf hinweisen, dass die Anwendung eine gute Leistung aufweist und unter Umständen für die automatische Skalierung geeignet ist.

Weitere Informationen finden Sie in diesem Thema unter Benutzerdefinierte Messwerte oder Externe Messwerte.

Benutzerdefinierte Messwerte

Ihre Anwendung kann einen benutzerdefinierten Messwert an Cloud Monitoring melden. Sie haben die Möglichkeit, Kubernetes so zu konfigurieren, dass auf diese Messwerte reagiert und Ihre Arbeitslast automatisch skaliert wird. Sie können Ihre Anwendung beispielsweise anhand von Messwerten wie Abfragen pro Sekunde, Schreibvorgänge pro Sekunde, Netzwerkleistung, Latenz bei der Kommunikation mit einer anderen Anwendung oder anderen für Ihre Arbeitslast sinnvollen Messwerten skalieren.

Für jeden der folgenden Werte ist es möglich, einen benutzerdefinierten Messwert auszuwählen:

  • Ein bestimmter Knoten, Pod oder ein beliebiges anderes Kubernetes-Objekt, einschließlich einer CustomResourceDefinition (CRD)
  • Der durchschnittliche Wert für einen Messwert, der von allen Pods in einem Deployment erfasst wird

Sie haben die Möglichkeit, einen bestimmten benutzerdefinierten Messwert nach Label zu filtern. Fügen Sie dazu das Feld selector hinzu, das auf den Schlüssel und den Wert des Labels gesetzt ist. So können Sie beispielsweise festlegen, dass selector: "environment=prod" nur Messwertwerte mit dem Label environment=prod zusammenfasst. Der Selektor kann eine binäre Kombination mehrerer Labelausdrücke sein. Weitere Informationen finden Sie in der Monitoring-Dokumentation unter Logbasierte Messwertlabels.

Damit Sie benutzerdefinierte Messwerte verwenden können, müssen Sie Monitoring in Ihrem Google Cloud-Projekt aktivieren und den Stackdriver-Adapter in Ihrem Cluster installieren. Nachdem benutzerdefinierte Messwerte nach Monitoring exportiert wurden, können sie Autoscaling-Ereignisse durch horizontales Pod-Autoscaling auslösen, um die Form der Arbeitslast zu ändern.

Benutzerdefinierte Messwerte müssen in einem bestimmten Format aus Ihrer Anwendung exportiert werden. Die Monitoring-UI enthält ein Tool zur automatischen Erstellung von Messwerten, mit dem sich benutzerdefinierte Messwerte automatisch erstellen lassen. Wenn Sie mit dem Tool zur automatischen Erstellung benutzerdefinierte Messwerte erstellen, werden diese von Monitoring automatisch erkannt.

Weitere Informationen finden Sie in der Anleitung zu Autoscaling von Deployments mit benutzerdefinierten Messwerten.

Externe Messwerte

Wenn Sie Ihre Arbeitslast basierend auf der Leistung einer Anwendung oder eines Dienstes außerhalb von Kubernetes skalieren möchten, können Sie einen externen Messwert konfigurieren. Sie müssen beispielsweise die Kapazität Ihrer Anwendung erhöhen, um Nachrichten von Pub/Sub aufzunehmen, wenn die Anzahl der nicht zugestellten Nachrichten tendenziell zunimmt.

Die externe Anwendung muss den Messwert in eine Monitoring-Instanz exportieren, auf die der Cluster zugreifen kann. Der Trend der einzelnen Messwerte im Laufe der Zeit bewirkt, dass das horizontale Pod-Autoscaling die Form der Arbeitslast automatisch ändert.

Weitere Informationen finden Sie in der Anleitung über Deployments mit externen Messwerten automatisch skalieren.

Messwerte importieren

So können Sie Messwerte in Monitoring importieren:

  • Exportieren Sie Messwerte aus der Anwendung mithilfe der Cloud Monitoring API oder
  • Konfigurieren Sie die Anwendung so, dass Messwerte im Prometheus-Format ausgegeben werden. Führen Sie dann den Adapter Prometheus-to-Stackdriver aus. Dies ist ein kleiner Open-Source-Sidecar-Container, mit dem die Messwerte erfasst, in das Monitoring-Format umgewandelt und an die Monitoring API übertragen werden.

Weitere Informationen finden Sie in der Monitoring-Dokumentation unter Messwerte erstellen.

Nächste Schritte