Auf dieser Seite finden Sie Informationen zu Entscheidungsereignissen, die vom horizontalen Pod-Autoscaler in Google Kubernetes Engine (GKE) ausgegeben werden. Wenn Sie diese Ereignisse analysieren, erhalten Sie Informationen dazu, wie der horizontale Pod-Autoscaler-Controller die Skalierung Ihrer Arbeitslast verwaltet, und können den Entscheidungsprozess hinter seinen Aktionen nachvollziehen.
Der horizontale Pod-Autoscaler gibt Entscheidungsereignisse aus, die als Logeinträge in Cloud Logging gespeichert werden.
Hinweis
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
Projekt auswählen oder erstellen
Sie können ein vorhandenes Projekt verwenden oder für diese Anleitung ein neues erstellen.
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
APIs aktivieren
Aktivieren Sie die APIs für GKE und Cloud Logging.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen.
Cloud Shell einrichten
In dieser Anleitung verwenden Sie Cloud Shell zum Ausführen von gcloud und kubectl
Befehlen. Cloud Shell ist eine Shell-Umgebung für die Verwaltung von
Ressourcen, die in gehostet werden Cloud de Confiance by S3NS. Sie ist bei
Google Cloud CLI und kubectl dem Befehlszeilentool vorinstalliert.
Aktivieren Sie Cloud Shell in der Cloud de Confiance Console.
In einem Frame im unteren Teil der Console wird eine Cloud Shell-Sitzung geöffnet.
Achten Sie vor dem Ausführen von Befehlen in dieser Anleitung darauf, dass Ihr Standardprojekt auf die Projekt-ID festgelegt ist, in der Sie die Beispielanwendung bereitstellen möchten. Führen Sie den folgenden Befehl in Cloud Shell aus, falls sie noch nicht festgelegt ist:
gcloud config set project PROJECT_ID
Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aktivieren der Loggenerierung sowie zum Zugriff auf und zur Verarbeitung von Logs benötigen:
-
So aktivieren Sie die Ereignisprotokollierung für das horizontale Pod-Autoscaling in Ihrem Cluster:
Administrator für Kubernetes Engine-Cluster (
roles/container.clusterAdmin) -
So greifen Sie auf Logs zu und verwenden den Log-Explorer und Observability Analytics:
Logbetrachter (
roles/logging.viewer)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Voraussetzungen
- Ihr GKE-Cluster muss Version
1.31.5-gke.1090000oder höher oder1.32.1-gke.1260000oder höher ausführen. - Aktivieren Sie Cloud Logging in Ihrem GKE-Cluster. Es gelten die Preise für Cloud Logging.
- Sie müssen ein horizontales Pod-Autoscaling haben, das Sie überwachen möchten. Die Felder für das horizontale Pod-Autoscaling dürfen keine sensiblen Daten enthalten.
Kosten
Es gelten die Preise für Cloud Logging , wenn Sie Cloud Logging aktivieren und Entscheidungslogs für das horizontale Pod-Autoscaling erfassen.
Entscheidungsereignisse für das horizontale Pod-Autoscaling aktivieren
Führen Sie den folgenden Befehl aus, um einen neuen Cluster mit aktivierten KCP_HPA-Entscheidungslogs zu erstellen:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--logging=SYSTEM,KCP_HPA
Führen Sie den folgenden Befehl aus, um die KCP_HPA-Entscheidungslogs in einem vorhandenen Cluster zu aktivieren:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--logging=SYSTEM,KCP_HPA
Ersetzen Sie Folgendes:
CLUSTER_NAME: Name des Clusters, den Sie erstellen oder aktualisieren möchten.PROJECT_ID: Ihre Cloud de Confiance Projekt ID.LOCATION: Compute-Regionen oder -Zonen für Ihren Cluster.
Mit diesen Befehlen werden die von KCP_HPA generierten Logs exportiert und am Ziel logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fhpa-controller"
in Cloud Logging gespeichert.
Rufen Sie die aktualisierte Logging-Konfiguration des Clusters ab und prüfen Sie die Liste der Logs
, um sicherzustellen, dass das KCP_HPA-Log aktiviert ist:
gcloud container clusters describe CLUSTER_NAME \
--location=LOCATION \
--flatten=loggingConfig \
--format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
Die Ausgabe sieht etwa so aus:
SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER,KCP_HPA
Logs für das horizontale Pod-Autoscaling in der Cloud de Confiance Console ansehen
Sie können das Verhalten des horizontalen Pod-Autoscalers in der Cloud de Confiance Console überwachen. In dieser Ansicht können Sie die gleichen Logs für atomare und endgültige Empfehlungen sehen, die in Cloud Logging verfügbar sind, ohne den Kontext Ihrer Arbeitslast zu verlassen.
So rufen Sie Logs für das horizontale Pod-Autoscaling in der Cloud de Confiance Console auf:
Rufen Sie in der Cloud de Confiance Console die Seite Arbeitslasten auf:
Wählen Sie die Arbeitslast aus, die vom horizontalen Pod-Autoscaler verwaltet wird.
Klicken Sie auf den Tab Skalierung.
Auf diesem Tab finden Sie Informationen zur Skalierung, einschließlich Ressourcennutzung, Effizienzdaten und Logs. Anhand der Daten auf diesem Tab können Sie die effektivste Konfiguration für das Autoscaling Ihrer Arbeitslasten ermitteln. Im Abschnitt Logs finden Sie dieselben Informationen aus den Logs und können diese Logs nach Art filtern, einschließlich „Ereignis“, „Endgültige Empfehlung“ und „Atomare Empfehlung“. Weitere Informationen zu den verschiedenen Logs finden Sie unter Logtypen.
Entscheidungsereignisse für das horizontale Pod-Autoscaling deaktivieren
Aktualisieren Sie einen Cluster, um die KCP_HPA-Komponente aus dem --logging-Flag zu entfernen:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--logging=SYSTEM
Ersetzen Sie Folgendes:
CLUSTER_NAME: Name des Clusters, den Sie erstellen oder aktualisieren möchten.PROJECT_ID: Ihre Cloud de Confiance Projekt ID.LOCATION: Compute-Regionen oder -Zonen für Ihren Cluster.
Mit diesem Befehl wird der Export der von KCP_HPA generierten Logs deaktiviert. Sie können sie nicht mit dem
Filter in Cloud Logging abrufen.logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fhpa-controller"
Rufen Sie die aktualisierte Logging-Konfiguration des Clusters ab und prüfen Sie die Liste der Logs
, um sicherzustellen, dass das KCP_HPA-Log deaktiviert ist:
gcloud container clusters describe CLUSTER_NAME \
--location=LOCATION \
--flatten=loggingConfig \
--format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
Die Ausgabe sieht etwa so aus:
SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER
Logtypen
Die Entscheidungsereignisse für das horizontale Pod-Autoscaling werden in Cloud Logging gespeichert,
unter der logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fhpa-controller"
Position, die sich im _Default Bucket im selben Projekt wie Ihr GKE-Cluster befindet.
Alle protokollierten Ereignisse liegen im JSON-Format vor und sind im Feld jsonPayload eines Logeintrags enthalten.
Sie müssen die Speicheranforderungen der potenziellen Logmengen sowie alle Auswirkungen auf Leistung und Kosten kennen. In den folgenden Beispielen wird erläutert, wie oft der horizontale Pod-Autoscaler die einzelnen Arten von Entscheidungsereignissen generiert:
Atomare Empfehlung: Der horizontale Pod-Autoscaler generiert alle 15 Sekunden ein Ereignis für eine atomare Empfehlung für jeden Messwert, der von jedem HPA Objekt in Ihrem Cluster überwacht wird. Wenn Sie beispielsweise zwei HPA-Objekte in Ihrem Cluster haben und jedes HPA-Objekt drei Messwerte überwacht, werden alle 15 Sekunden sechs atomare Empfehlungen protokolliert.
Endgültige Empfehlung: Der horizontale Pod-Autoscaler generiert alle 15 Sekunden ein Ereignis für eine endgültige Empfehlung für jedes HPA-Objekt in Ihrem Cluster. Wenn Sie beispielsweise zwei HPA-Objekte in Ihrem Cluster haben, werden alle 15 Sekunden zwei endgültige Empfehlungen protokolliert.
Bei zwei HPA-Objekten, die jeweils drei Messwerte überwachen, enthält Ihr KCP_HPA Log
alle 15 Sekunden insgesamt acht Einträge für Entscheidungsereignisse.
Atomare Empfehlung
Ein Log für eine atomare Empfehlung beschreibt eine Empfehlung, die auf einem einzelnen Messwert basiert, der für Ihr horizontales Pod-Autoscaling angegeben ist.
Ein Log für eine atomare Empfehlung enthält die folgenden Felder:
| Feld | Beschreibung |
|---|---|
start_time |
Gibt an, wann der HPA mit der Berechnung einer Empfehlung begonnen hat. |
hpa |
Der Name des HPA-Objekts, das mit der Empfehlung verknüpft ist. |
pod_count |
Gibt die Gesamtzahl der Pods an, die mit dem HPA verknüpft sind, als die Empfehlung erstellt wurde. Diese Zahl umfasst auch bereite, nicht bereite und ignorierte Pods. |
metric |
Enthält Informationen zur Spezifikation und zum Status des Messwerts, der für die Empfehlung verwendet wurde. Das Feld metric enthält die folgenden Unterfelder:
|
summary |
Das Feld „summary“ enthält Informationen zum Empfehlungsergebnis, einschließlich der vorgeschlagenen Anzahl von Replikaten. Wenn keine Empfehlung vorgeschlagen werden kann, wird eine Fehlermeldung angezeigt. Das Feld summary enthält die folgenden Unterfelder:
|
Beispiel für ein Log für eine atomare Empfehlung:
{
"insertId": "xiu4bty9k5b279wu",
"jsonPayload": {
"instance": {
"vm_name": "my-unique-vm-identifier",
"zone": "us-central1-a"
},
"atomicRecommendation": {
"startTime": "2025-02-06T20:07:00.573419526Z",
"hpa": "gke-managed-cim/kube-state-metrics",
"metric": {
"newestSampleAgeSeconds": -39.573419526,
"status": {
"averageValue": "25849856"
},
"newestSampleTime": "2025-02-06T20:06:21Z",
"type": "Resource",
"spec": {
"target": {
"averageValue": "400Mi"
},
"name": "memory"
}
},
"podCount": {
"ready": 1,
"total": 1
},
"summary": {
"override": "none",
"replicas": 1,
"dampening": "none"
}
}
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"project_id": "my-project-id",
"cluster_name": "my-cluster",
"location": "us-central1-a",
"component_location": "us-central1-a",
"component_name": "hpa-controller"
}
},
"timestamp": "2025-02-06T20:07:00.593777835Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project-id/logs/container.googleapis.com%2Fhpa-controller",
"sourceLocation": {
"file": "event_logger.go",
"line": "61"
},
"receiveTimestamp": "2025-02-06T20:07:05.284753647Z"
}
Abschließende Empfehlung
Ein Log für eine endgültige Empfehlung beschreibt eine konsolidierte Empfehlung, die vom horizontalen Pod-Autoscaler vorgeschlagen wird. Der horizontale Pod-Autoscaler kombiniert alle atomaren Empfehlungen aus verschiedenen Messwerten, um eine endgültige Empfehlung zu erstellen und umzusetzen. Die Umsetzung bedeutet, dass der HPA die Bereitstellung anweist, die Anzahl der Replikate an den empfohlenen Wert anzupassen. Wenn die endgültige Empfehlung eine andere Anzahl von Pods vorschlägt als die Anzahl der ausgeführten Pods, löst der horizontale Pod-Autoscaler ein Ereignis zum Hoch- oder Herunterskalieren aus, um die Bereitstellung entsprechend anzupassen.
Ein Log für eine endgültige Empfehlung enthält die folgenden Felder:
| Feld | Beschreibung |
|---|---|
start_time |
Gibt an, wann der HPA mit der Berechnung einer Empfehlung begonnen hat. |
hpa |
Der Name des HPA-Objekts, das mit der Empfehlung verknüpft ist. |
target_ref |
Gibt das HPA ScaleTargetRef-Objekt an, das mit einer Empfehlung verknüpft ist. |
configured_size |
Die zuletzt aufgezeichnete Anzahl von Replikaten, bevor der HPA diese Empfehlung berechnet und anwendet. |
top_level_override |
Gibt einen Grund an, wenn die vom HPA vorgeschlagene Empfehlung nicht angewendet wird (z. B. aufgrund der Toleranz), oder none, wenn keine Überschreibung erfolgt. |
top_level_limit |
Gibt einen Grund an, wenn die vom HPA vorgeschlagene Empfehlung angepasst werden muss (z. B. aufgrund der Anzahl der Replikate, die durch die Felder MinReplicas oder MaxReplicas in der HPA-Spezifikation definiert sind). |
leading_metric_index |
Der führende Messwertindex im Array Spec metrics ist der Messwert, dessen zugehörige atomare Empfehlung als endgültige Empfehlung verwendet wird. |
normalization |
Enthält eine Zusammenfassung der Stabilisierung und der Einschränkungen, falls vorhanden:
|
replicas |
Empfohlene Anzahl von Replikaten. |
actuation_error |
Eine Fehlermeldung, die mit dem Fehler verknüpft ist, wenn die Umsetzung fehlgeschlagen ist. |
actuation_time |
Zeitstempel der erfolgreichen Umsetzung. |
actuation_latency_seconds |
Zeit in Sekunden vom Beginn der Empfehlungsberechnung bis zum Erfolg der Umsetzung. |
Beispiel für ein Log für eine endgültige Empfehlung:
{
"insertId": "qzyv7alfv1sm19ns",
"jsonPayload": {
"finalRecommendation": {
"actuationTime": "2025-02-06T20:06:57.487786873Z",
"targetRef": {
"name": "kube-state-metrics",
"kind": "StatefulSet",
"apiVersion": "apps/v1"
},
"topLevelLimit": "none",
"hpa": "gke-managed-cim/kube-state-metrics",
"topLevelOverride": "noRecommendation",
"replicas": 1,
"configuredSize": 1,
"actuationLatencySeconds": 0.003722451,
"startTime": "2025-02-06T20:06:57.484064422Z"
},
"instance": {
"vm_name": "my-unique-vm-identifier",
"zone": "us-central1-a"
}
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"cluster_name": "my-cluster",
"component_location": "us-central1-a",
"component_name": "hpa-controller",
"location": "us-central1-a",
"project_id": "my-project-id"
}
},
"timestamp": "2025-02-06T20:06:57.488193527Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project-id/logs/container.googleapis.com%2Fhpa-controller",
"sourceLocation": {
"file": "event_logger.go",
"line": "61"
},
"receiveTimestamp": "2025-02-06T20:06:57.844898727Z"
}
Fehlerbehebung
In diesem Abschnitt werden Probleme und Schritte zur Fehlerbehebung im Zusammenhang mit Ereignissen des horizontalen Pod-Autoscalers beschrieben.
Keine Termine
Wenn keine Entscheidungsereignisse für das horizontale Pod-Autoscaling angezeigt werden, prüfen Sie, ob Sie alle folgenden Schritte ausgeführt haben:
- Sie haben Cloud Logging für den Cluster aktiviert.
- Sie haben die
KCP_HPA-Logs für den Cluster aktiviert. - Sie haben mindestens ein korrekt konfiguriertes
hpa-Objekt in Ihrem Cluster bereitgestellt.
Führen Sie den folgenden Befehl aus, um die Konfiguration Ihres hpa-Objekts aufzurufen:
kubectl describe hpa $HPA_NAME
Wenn weiterhin keine KCP_HPA-Logs angezeigt werden, wenden Sie sich an den Cloud de Confiance Support.
Nächste Schritte
- Siehe GKE-Logs.
- Verstehen Sie Ihre GKE-Logs.
- Bestimmte GKE-Logs mit Beispielabfragen finden
- Weitere Informationen zum horizontalen Pod-Autoscaling.