Auf dieser Seite finden Sie Informationen zu Entscheidungsereignissen, die vom vertikalen Pod-Autoscaler in Google Kubernetes Engine (GKE) ausgegeben werden. Wenn Sie diese Ereignisse analysieren, erhalten Sie Informationen dazu, wie der Controller für vertikales Pod-Autoscaling die Skalierung Ihrer Arbeitslast verwaltet, und können die Entscheidungsfindung hinter den Aktionen nachvollziehen.
Der vertikale Pod-Autoscaler gibt Entscheidungsereignisse aus, die als Logeinträge in Cloud Logging gespeichert werden.
Hinweis
Sie müssen die folgenden Voraussetzungen erfüllen:
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 GKE- und Cloud Logging APIs.
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 Cloud de Confiance by S3NSgehostet werden. Sie ist bei Google Cloud CLI und dem kubectl-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 Protokollgenerierung sowie zum Aufrufen und Verarbeiten von Protokollen benötigen:
-
So aktivieren Sie die Ereignisprotokollierung für das vertikale 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:
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.36.0-gke.1601000oder höher ausgeführt werden. - Aktivieren Sie Cloud Logging in Ihrem GKE-Cluster.
- Sie benötigen ein vertikales Pod-Autoscaling, das Sie überwachen möchten. Achten Sie darauf, dass die Felder für das vertikale Pod-Autoscaling keine sensiblen Daten enthalten.
Kosten
Die Cloud Logging-Preise gelten, wenn Sie Cloud Logging aktivieren und Entscheidungslogs für das vertikale Pod-Autoscaling erfassen.
Entscheidungslogs für vertikales Pod-Autoscaling aktivieren
Mit den Befehlen in den folgenden Abschnitten können Sie die von KCP_VPA generierten Logs exportieren und am Zielort logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" in Cloud Logging speichern.
Logs in einem neuen Cluster aktivieren
Führen Sie den folgenden Befehl aus, um einen neuen Cluster mit aktivierten KCP_VPA-Entscheidungslogs zu erstellen.
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--logging=SYSTEM,KCP_VPA
Ersetzen Sie Folgendes:
CLUSTER_NAME: der Name des Clusters, den Sie erstellen oder aktualisieren möchten.PROJECT_ID: Ihre Cloud de Confiance Projekt-ID.LOCATION: die Compute-Regionen oder -Zonen für Ihren Cluster.
Logs für einen vorhandenen Cluster aktivieren
So aktivieren Sie die KCP_VPA-Entscheidungslogs für einen vorhandenen Cluster:
Überprüfen Sie die vorhandene Konfiguration des Clusters. Wenn für den Cluster bereits bestimmte Logging-Komponenten konfiguriert sind, entscheiden Sie, ob Sie die vorhandene Logging-Konfiguration ergänzen oder überschreiben möchten.
Führen Sie den folgenden Befehl aus, um die Entscheidungslogs für das vertikale Pod-Autoscaling zu aktivieren. Wenn Sie eine vorhandene Konfiguration ergänzen, fügen Sie dem Befehl auch die vorhandene Protokollierungskonfiguration hinzu.
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID \ --logging=SYSTEM,KCP_VPAErsetzen 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.
Prüfen, ob das Logging aktiviert ist
Wenn Sie prüfen möchten, ob die KCP_VPA-Entscheidungslogs für einen Cluster aktiviert sind, rufen Sie die aktualisierte Logging-Konfiguration des Clusters ab und sehen Sie sich die Liste der Logs an. Dazu führen Sie den folgenden Befehl aus:
gcloud container clusters describe CLUSTER_NAME \
--location=LOCATION \
--flatten=loggingConfig \
--format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
Ersetzen Sie Folgendes:
CLUSTER_NAMEist der Name des Clusters.LOCATION: die Compute-Regionen oder -Zonen für Ihren Cluster.
Wenn KCP_VPA-Entscheidungslogs für einen Cluster aktiviert sind, sieht die Ausgabe in etwa so aus:
SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER,KCP_VPA
Logs des vertikalen Pod-Autoscalers im Log-Explorer ansehen
Sie können das Verhalten des vertikalen Pod-Autoscaling im Log-Explorer beobachten. So rufen Sie Protokolle für vertikales Pod-Autoscaling auf:
Rufen Sie die Seite „Log-Explorer“ auf:
Wählen Sie Alle Lognamen aus und suchen Sie in den Lognamen nach
vpa-controller.Im Log-Explorer werden alle Logs für vertikales Pod-Autoscaling angezeigt, einschließlich der Logs aus allen Clustern, in denen Logs für vertikales Pod-Autoscaling im Projekt aktiviert sind.
Sie können die Logs nach Clusternamen oder Arbeitslastnamen filtern. Wenn Sie beispielsweise Ereignisse aus einer bestimmten Arbeitslast in einem Cluster auflisten möchten, geben Sie den Clusternamen und den Namen der Arbeitslast mit der folgenden Abfrage an:
resource.labels.cluster_name="CLUSTER_NAME" AND jsonPayload.target.name="WORKLOAD_NAME"Ersetzen Sie Folgendes:
CLUSTER_NAMEist der Name des Clusters.WORKLOAD_NAME: Der Name der Arbeitslast.
Entscheidungsprotokolle für vertikales Pod-Autoscaling deaktivieren
Führen Sie den folgenden Befehl aus, um die
KCP_VPA-Entscheidungslogs in einem vorhandenen Cluster zu deaktivieren:gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID \ --logging=SYSTEMPrüfen Sie, ob die
KCP_VPA-Entscheidungslogs deaktiviert sind. Führen Sie dazu den folgenden Befehl aus:gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --flatten=loggingConfig \ --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'Wenn
KCP_VPA-Entscheidungslogs für einen Cluster deaktiviert sind, sieht die Ausgabe in etwa so aus:SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER
Protokolltypen
Die Entscheidungsereignisse für das vertikale Pod-Autoscaling werden in Cloud Logging am logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller"-Standort gespeichert, der 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.
Art und Häufigkeit der generierten Logs hängen vom Modus für vertikales Pod-Autoscaling ab, der für Ihre Arbeitslast konfiguriert ist. Es gibt vier Arten von VPA-Logs, die nach dem Vorgang kategorisiert werden, den sie ausführen:
- Aktualisierungsempfehlung: Jede Minute wird von jedem vertikalen Pod-Autoscaler ein neues Protokoll für Aktualisierungsempfehlungen generiert.
- Pod entfernen: Jeder VerticalPodAutoscaler generiert ein Log vom Typ „Pod entfernen“ für jeden Pod, wenn der VerticalPodAutoscaler beschließt, die Größe im Modus
Recreatezu ändern. - Empfehlung bei Entfernung anwenden: Jeder vertikale Pod-Autoscaler generiert ein Protokoll für die angewendete Empfehlung für jeden Pod, wenn der vertikale Pod-Autoscaler beschließt, die Größe im Modus
Recreatezu ändern. - Empfehlung anwenden: Jeder vertikale Pod-Autoscaler generiert ein Log für die Anwendung der Empfehlung für jeden Pod, wenn der vertikale Pod-Autoscaler beschließt, die Größe im Modus
InPlaceOrRecreatezu ändern.
Welche Arten von Logs der Controller ausgeben kann, hängt vom Modus des vertikalen Pod-Autoscalers ab. In der folgenden Tabelle sind die Logs aufgeführt, die für die einzelnen Modi ausgegeben werden können.
| Modus für vertikales Pod-Autoscaling | Arten von Logs, die ausgegeben werden können |
|---|---|
Auto (verworfen) oder Recreate |
|
InPlaceOrRecreate |
|
Wenn In-place resize für einen vertikalen Pod-Autoscaler im Modus InPlaceOrRecreate fehlschlägt, verhält sich der Autoscaler wie im Modus Recreate.
Empfehlung aktualisieren
Ein Protokoll mit Aktualisierungsempfehlungen kann mit den folgenden Modi für vertikales Pod-Autoscaling erstellt werden: Auto (eingestellt), Recreate und InPlaceOrRecreate.
Das jsonPayload dieses Entscheidungslogs enthält die folgenden Felder:
| Feld | Beschreibung |
|---|---|
vpaName |
Der Name des VPA. |
vpaNamespace |
Der Namespace des VPA. |
target |
Die Arbeitslast, auf die sich dieser VPA bezieht.
|
operation |
Der Vorgang, der ausgeführt wird. Der Wert ist einer der folgenden:
|
state |
Status des Vorgangs. Der Wert ist einer der folgenden:
|
reason |
Der Grund erklärt, warum der Vorgang übersprungen oder fehlgeschlagen ist. Für den Vorgang |
recommendedResources |
Die Rohdaten der Empfehlung. Dies entspricht dem Feld Status.Recommendation im VPA-Objekt.
|
confidence |
Konfidenz der Empfehlung. Dieses Feld ist vorhanden, wenn der Status succeeded ist. Der Wert ist einer der folgenden:
|
Beispiel für ein Empfehlungslog für Updates:
{
"insertId": "ehz6w9d304v4zttg",
"jsonPayload": {
"state": "SUCCEEDED",
"instance": {
"vm_name": "my-unique-vm-identifier",
"zone": "us-central1-c"
},
"recommendedResources": [
{
"lowerBound": {
"memory": "5Mi",
"cpu": "5m"
},
"containerName": "nginx",
"uncappedTarget": {
"memory": "5Mi",
"cpu": "1m"
},
"upperBound": {
"memory": "5Mi",
"cpu": "5m"
},
"target": {
"memory": "5Mi",
"cpu": "5m"
}
}
],
"operation": "UPDATE_RECOMMENDATION",
"target": {
"name": "my-workload",
"kind": "Deployment",
"apiVersion": "apps/v1"
},
"vpaNamespace": "default",
"vpaName": "my-vpa"
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"component_location": "us-central1-c",
"project_id": "my-project",
"cluster_name": "my-cluster",
"location": "us-central1-c",
"component_name": "vpa-controller"
}
},
"timestamp": "2026-01-22T19:28:16.069635605Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:28:17.750678359Z"
}
Pod entfernen
Ein Log für das Entfernen von Pods ist im VPA-Modus Auto (eingestellt) und Recreate verfügbar.
Dieser Logtyp ist auch im VPA-Modus InPlaceOrRecreate möglich, wenn der In-place resize-Vorgang fehlschlägt.
Das jsonPayload dieses Entscheidungslogs enthält die folgenden Felder:
| Feld | Beschreibung |
|---|---|
vpaName |
Der Name des VPA. |
vpaNamespace |
Der Namespace des VPA. |
target |
Die Arbeitslast, auf die sich dieser VPA bezieht.
|
operation |
Der Vorgang, der ausgeführt wird. Der Wert ist einer der folgenden:
|
state |
Der Status des Vorgangs. Der Wert ist einer der folgenden:
|
reason |
Der Grund erklärt, warum der Vorgang übersprungen oder fehlgeschlagen ist. Im Erfolgsfall für die Vorgänge |
pod |
Der Name des Pods. |
Beispiel für ein Log zum Entfernen eines Pods:
{
"insertId": "8x278gc4f75oowf4",
"jsonPayload": {
"target": {
"kind": "Deployment",
"apiVersion": "apps/v1",
"name": "my-deployment"
},
"operation": "EVICT_POD",
"vpaName": "my-vpa",
"pod": "my-deployment-856ff7966-gr4rh",
"state": "SUCCEEDED",
"vpaNamespace": "default",
"instance": {
"vm_name": "my-unique-vm-identifier",
"zone": "us-central1-c"
}
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"component_name": "vpa-controller",
"cluster_name": "my-cluster",
"component_location": "us-central1-c",
"location": "us-central1-c",
"project_id": "my-project"
}
},
"timestamp": "2026-01-22T19:26:25.283067078Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:26:27.766941073Z"
}
Empfehlung bei Ausschluss anwenden
Ein Log zum Anwenden von Empfehlungen bei der Entfernung ist mit dem VPA-Modus Auto (eingestellt) und Recreate verfügbar. Dieser Logtyp ist auch im VPA-Modus InPlaceOrRecreate möglich, wenn In-place resize fehlschlägt.
Das jsonPayload dieses Entscheidungslogs enthält die folgenden Felder:
| Feld | Beschreibung |
|---|---|
vpaName |
Der Name des VPA. |
vpaNamespace |
Der Namespace des VPA. |
target |
Die Arbeitslast, auf die sich dieser VPA bezieht.
|
operation |
Der Vorgang, der ausgeführt wird. Der Wert ist einer der folgenden:
|
state |
Status des Vorgangs. Der Wert ist einer der folgenden:
|
reason |
Der Grund erklärt, warum der Vorgang übersprungen oder fehlgeschlagen ist. Für den Vorgang |
pod |
Der Name des Pods. |
appliedResources |
Die auf den Pod angewendeten Ressourcen.
|
confidence |
Die Zuverlässigkeit der Empfehlung. Dieses Feld ist vorhanden, wenn der Status succeeded ist. Der Wert ist einer der folgenden:
|
Beispiel für das Anwenden einer Empfehlung auf ein Ausschlusslog:
{
"insertId": "366tcmgdkq94eppg",
"jsonPayload": {
"appliedResources": [
{
"containerName": "my-container",
"requests": {
"memory": "15Mi",
"cpu": "15m"
}
}
],
"vpaName": "my-vpa",
"vpaNamespace": "default",
"instance": {
"zone": "us-central1-c",
"vm_name": "my-unique-vm-identifier"
},
"pod": "my-deployment-856ff7966-%",
"state": "SUCCEEDED",
"target": {
"name": "my-deployment",
"kind": "Deployment",
"apiVersion": "apps/v1"
},
"operation": "APPLY_RECOMMENDATION_ON_EVICTION"
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"location": "us-central1-c",
"component_location": "us-central1-c",
"cluster_name": "my-cluster",
"component_name": "vpa-controller",
"project_id": "my-project"
}
},
"timestamp": "2026-01-22T19:26:25.344313199Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:26:32.744122156Z"
}
Empfehlung direkt anwenden
Ein Log für die Anwendung von Empfehlungen ist mit dem VPA-Modus InPlaceOrRecreate verfügbar.
Das jsonPayload dieses Entscheidungslogs enthält die folgenden Felder:
| Feld | Beschreibung |
|---|---|
vpaName |
Der Name des VPA. |
vpaNamespace |
Der Namespace des VPA. |
target |
Die Arbeitslast, auf die sich dieser VPA bezieht.
|
operation |
Der Vorgang, der ausgeführt wird. Der Wert ist einer der folgenden:
|
state |
Der Status des Vorgangs. Der Wert ist einer der folgenden:
|
reason |
Der Grund erklärt, warum der Vorgang übersprungen oder fehlgeschlagen ist. Im Erfolgsfall für die Vorgänge |
pod |
Der Name des Pods. |
appliedResources |
Die auf den Pod angewendeten Ressourcen.
|
confidence |
Die Zuverlässigkeit der Empfehlung. Dieses Feld ist vorhanden, wenn der Status succeeded ist. Der Wert ist einer der folgenden:
|
Beispiel für einen Logeintrag zum Anwenden einer Empfehlung:
{
"insertId": "suzfuepgyiwap7hb",
"jsonPayload": {
"pod": "my-deployment-cdc7fd7b4-grxlk",
"vpaNamespace": "default",
"state": "SUCCEEDED",
"target": {
"name": "my-deployment",
"apiVersion": "apps/v1",
"kind": "Deployment"
},
"operation": "APPLY_RECOMMENDATION_IN_PLACE",
"appliedResources": [
{
"containerName": "my-container",
"limits": {
"cpu": "10m",
"memory": "10Mi"
},
"requests": {
"cpu": "5m",
"memory": "5Mi"
}
}
],
"instance": {
"zone": "us-central1-c",
"vm_name": "my-unique-vm-identifier"
},
"vpaName": "my-vpa"
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"project_id": "my-project",
"component_location": "us-central1-c",
"cluster_name": "my-cluster",
"location": "us-central1-c",
"component_name": "vpa-controller"
}
},
"timestamp": "2026-01-22T19:26:25.214095375Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:26:27.766941073Z"
}
Fehlerbehebung
In diesem Abschnitt werden Probleme und Lösungsschritte im Zusammenhang mit Ereignissen des vertikalen Pod-Autoscalers beschrieben.
Keine Termine
Wenn Sie keine Ereignisse für Entscheidungen zum vertikalen Pod-Autoscaling sehen, haben Sie möglicherweise Folgendes nicht ausgeführt:
- Sie haben Cloud Logging für den Cluster aktiviert.
- Sie haben die
KCP_VPA-Logs für den Cluster aktiviert. - Sie haben mindestens ein korrekt konfiguriertes
vpa-Objekt in Ihrem Cluster bereitgestellt.
Führen Sie den folgenden Befehl aus, um die Konfiguration Ihres vpa-Objekts aufzurufen:
kubectl describe vpa $VPA_NAME
Wenn Sie weiterhin keine KCP_VPA-Logs sehen, wenden Sie sich an den Cloud de Confiance Support.
Nächste Schritte
- Weitere Informationen finden Sie unter GKE-Logs.
- GKE-Logs verstehen
- Beispielabfragen zum Suchen bestimmter GKE-Logs
- Weitere Informationen zum vertikalen Pod-Autoscaling