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 Controller für horizontales Pod-Autoscaling die Skalierung Ihrer Arbeitslast verwaltet, und können die Entscheidungsfindung hinter den Aktionen nachvollziehen.
Der horizontale Pod-Autoscaler gibt Entscheidungsereignisse aus, die als Logeinträge in Cloud Logging gespeichert werden.
Hinweis
Führen Sie die folgenden Schritte aus:
Projekt auswählen oder erstellen
Sie können ein vorhandenes Projekt verwenden oder für dieses Tutorial ein neues erstellen.
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
APIs aktivieren
Aktivieren Sie die GKE- und Cloud Logging APIs, falls sie noch nicht aktiviert sind.
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 Inhaberrolle (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 Google Cloudgehostet werden. Sie ist bei Google Cloud CLI und dem kubectl-Befehlszeilentool vorinstalliert.
Aktivieren Sie Cloud Shell in der Google Cloud 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 Logerstellung und zum Zugriff auf Logs und deren Verarbeitung benötigen:
-
So aktivieren Sie die Ereignisprotokollierung für das horizontale Pod-Autoscaling in Ihrem Cluster:
Kubernetes Engine-Clusteradministrator (
roles/container.clusterAdmin) -
So greifen Sie auf Logs zu und verwenden den Log-Explorer und Observability Analytics:
Loganzeige (
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
- Auf Ihrem GKE-Cluster muss Version
1.31.5-gke.1090000oder höher oder Version1.32.1-gke.1260000oder höher ausgeführt werden. - Aktivieren Sie Cloud Logging in Ihrem GKE-Cluster. Es gelten die Cloud Logging-Preise.
- Sie benötigen ein horizontales Pod-Autoscaling, das Sie überwachen möchten. Achten Sie darauf, dass die Felder für das horizontale Pod-Autoscaling keine sensiblen Daten enthalten.
Kosten
Die Cloud Logging-Preise gelten, wenn Sie Cloud Logging aktivieren und Entscheidungslogs für horizontales Pod-Autoscaling erfassen.
Entscheidungsereignisse für horizontales Pod-Autoscaling aktivieren
gcloud
Führen Sie den folgenden Befehl aus, um einen neuen Cluster mit aktiviertenKCP_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 für einen 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 Projekt-ID in Google Cloud .LOCATION: Compute-Regionen oder -Zonen für Ihren Cluster.
Terraform
Wenn SieKCP_HPA-Entscheidungsprotokolle mit Terraform aktivieren möchten, aktualisieren Sie Ihre google_container_cluster-Ressource. Fügen Sie im logging_config-Block den Wert KCP_HPA der Liste für das Feld enable_components hinzu:
resource "google_container_cluster" "primary" {
name = "CLUSTER_NAME"
location = "LOCATION"
# ... other configuration ...
logging_config {
enable_components = ["SYSTEM_COMPONENTS", "KCP_HPA"]
}
}
Ersetzen Sie Folgendes:
CLUSTER_NAME: Name des Clusters, den Sie erstellen möchten.LOCATION: Die Computing-Region oder -Zone für Ihren Cluster.
Mit diesen Befehlen können Sie die von KCP_HPA generierten Logs exportieren und am Zielort logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fhpa-controller" in Cloud Logging speichern.
Rufen Sie die aktualisierte Logging-Konfiguration des Clusters ab und prüfen Sie die Liste der Logs, um sicherzugehen, 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 horizontales Pod-Autoscaling in der Google Cloud Console ansehen
Sie können das Verhalten des horizontalen Pod-Autoscalers in derGoogle Cloud -Konsole überwachen. In dieser Ansicht können Sie die gleichen atomaren und endgültigen Empfehlungslogs sehen, die in Cloud Logging verfügbar sind, ohne den Kontext Ihrer Arbeitslast zu verlassen.
So rufen Sie Logs für horizontales Pod-Autoscaling in der Google Cloud -Console auf:
Rufen Sie in der Google Cloud 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 automatische Skalieren Ihrer Arbeitslasten ermitteln. Im Abschnitt Logs finden Sie dieselben Informationen wie unter Logs. Sie 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 horizontales Pod-Autoscaling deaktivieren
gcloud
Aktualisieren Sie einen Cluster, um die KomponenteKCP_HPA aus dem Flag --logging 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 Google Cloud Projekt-ID.LOCATION: Compute-Regionen oder -Zonen für Ihren Cluster.
Terraform
Wenn SieKCP_HPA-Entscheidungsprotokolle mit Terraform deaktivieren möchten, aktualisieren Sie Ihre google_container_cluster-Ressource. Entfernen Sie im logging_config-Block den Wert KCP_HPA aus der Liste für das Feld enable_components:
resource "google_container_cluster" "primary" {
name = "CLUSTER_NAME"
location = "LOCATION"
# ... other configuration ...
logging_config {
enable_components = ["SYSTEM_COMPONENTS"]
}
}
Ersetzen Sie Folgendes:
CLUSTER_NAME: Name des Clusters, den Sie aktualisieren möchten.LOCATION: Die Computing-Region oder -Zone 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 logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fhpa-controller" in Cloud Logging abrufen.
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 den horizontalen Pod-Autoscaler werden in Cloud Logging am Speicherort logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fhpa-controller" gespeichert, der sich im Bucket _Default im selben Projekt wie Ihr GKE-Cluster befindet.
Alle protokollierten Ereignisse haben das Format JSON und sind im Feld jsonPayload eines Logeintrags zu finden.
Achten Sie darauf, dass Sie die Speicheranforderungen der potenziellen Log-Volumes sowie alle Leistungs- oder Kostenfolgen kennen. In den folgenden Beispielen wird erläutert, wie häufig das horizontale Pod-Autoscaling die einzelnen Arten von Entscheidungsereignissen generiert:
Atomare Empfehlung: Der horizontale Pod-Autoscaler generiert alle 15 Sekunden ein atomares Empfehlungsereignis 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 endgültiges Empfehlungsereignis 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.
Insgesamt werden mit zwei HPA-Objekten, die jeweils drei Messwerte überwachen, alle 15 Sekunden insgesamt acht Einträge für Entscheidungsereignisse in Ihr KCP_HPA-Log geschrieben.
Atomare Empfehlung
Ein atomares Empfehlungsprotokoll beschreibt eine Empfehlung, die auf einem einzelnen Messwert basiert, der in Ihrem horizontalen Pod-Autoscaler angegeben ist.
Ein atomarer Log enthält die folgenden Felder:
| Feld | Beschreibung |
|---|---|
start_time |
Gibt an, wann 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 dem HPA zugeordnet sind, wenn die Empfehlung erstellt wird. Diese Zahl umfasst auch bereite, nicht bereite und ignorierte Pods. |
metric |
Hier finden Sie Informationen zur Spezifikation und zum Status des Messwerts, der für die Empfehlung verwendet wird. Das Feld metric enthält die folgenden untergeordneten Felder:
|
summary |
Das Feld „Zusammenfassung“ 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 untergeordneten Felder:
|
Beispiel für ein Log mit atomaren Empfehlungen:
{
"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 abschließendes Empfehlungslog beschreibt eine konsolidierte Empfehlung, die vom horizontalen Pod-Autoscaling vorgeschlagen wird. Der horizontale Pod-Autoscaler kombiniert alle atomaren Empfehlungen aus verschiedenen Messwerten, um eine endgültige Empfehlung zu erstellen und umzusetzen. „Actuation“ bedeutet, dass der HPA das Deployment anweist, die Anzahl der Replikate an den empfohlenen Wert anzupassen. Wenn die endgültige Empfehlung eine andere Anzahl von Pods als die Anzahl der ausgeführten Pods vorschlägt, löst das horizontale Pod-Autoscaling ein Hoch- oder Herunterskalierungsereignis aus, um das Deployment entsprechend anzupassen.
Ein endgültiges Empfehlungslog enthält die folgenden Felder:
| Feld | Beschreibung |
|---|---|
start_time |
Gibt an, wann 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-Objekt ScaleTargetRef an, das mit einer Empfehlung verknüpft ist. |
configured_size |
Die zuletzt aufgezeichnete Anzahl von Replikaten, bevor HPA diese Empfehlung berechnet und anwendet. |
top_level_override |
Gibt einen Grund an, wenn die von 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 Spec metrics-Array ist der Messwert, dessen zugehörige atomare Empfehlung als endgültige Empfehlung verwendet wird. |
normalization |
Enthält eine Zusammenfassung der Stabilisierung und Einschränkung, sofern vorhanden:
|
replicas |
Empfohlene Anzahl von Replikaten. |
actuation_error |
Eine Fehlermeldung, die mit dem Fehler zusammenhängt, wenn die Betätigung fehlgeschlagen ist. |
actuation_time |
Zeitstempel der Auslösung bei Erfolg. |
actuation_latency_seconds |
Die Zeit in Sekunden, die vom Beginn der Empfehlungsberechnung bis zum erfolgreichen Abschluss der Aktivierung vergangen ist. |
Beispiel für ein Log mit einer endgültigen 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 Lösungsschritte im Zusammenhang mit Ereignissen des horizontalen Pod-Autoscalers beschrieben.
Keine Termine
Wenn Sie keine Entscheidungsereignisse für das horizontale Pod-Autoscaling sehen, prüfen Sie, ob Sie Folgendes getan 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 des hpa-Objekts aufzurufen:
kubectl describe hpa $HPA_NAME
Wenn Sie immer noch keine KCP_HPA-Logs sehen, wenden Sie sich an den Google Cloud -Support.
Nächste Schritte
- Weitere Informationen finden Sie unter GKE-Logs.
- GKE-Logs verstehen
- Informationen zum Suchen nach bestimmten GKE-Logs mit Beispielabfragen
- Weitere Informationen zum horizontalen Pod-Autoscaling