Cette page fournit des informations sur les événements de décision émis par l'autoscaler de pods vertical dans Google Kubernetes Engine (GKE). En analysant ces événements, vous pouvez obtenir des informations sur la façon dont le contrôleur d'autoscaler vertical des pods gère le scaling de votre charge de travail et comprendre le processus de prise de décision derrière ses actions.
L'autoscaler vertical de pods émet des événements de décision, qui sont stockés sous forme d'entrées de journal dans Cloud Logging.
Avant de commencer
Assurez-vous de remplir les conditions préalables suivantes :
Sélectionner ou créer un projet
Vous pouvez utiliser un projet existant ou en créer un pour ce tutoriel.
-
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.
Activer les API
Activez les API GKE et Cloud Logging si ce n'est pas déjà fait.
Rôles requis pour activer les API
Pour activer les API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.
Configurer Cloud Shell
Dans ce tutoriel, vous utilisez Cloud Shell pour exécuter des commandes gcloud et kubectl. Cloud Shell est un environnement shell permettant de gérer les ressources hébergées sur Cloud de Confiance by S3NS. Il est préinstallé avec Google Cloud CLI et l'outil de ligne de commande kubectl.
Dans la console Cloud de Confiance , activez Cloud Shell.
Une session Cloud Shell s'ouvre dans un cadre situé en bas de la console.
Avant d'exécuter des commandes dans ce tutoriel, assurez-vous que votre projet par défaut est défini sur l'ID du projet dans lequel vous souhaitez déployer l'exemple d'application. Si ce n'est pas déjà fait, exécutez la commande suivante dans Cloud Shell :
gcloud config set project PROJECT_ID
Remplacez PROJECT_ID par votre ID du projet
Rôles et autorisations nécessaires
Pour obtenir les autorisations nécessaires pour activer la génération de journaux, et pour accéder aux journaux et les traiter, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :
-
Pour activer la journalisation des événements de l'autoscaler de pods vertical dans votre cluster :
Administrateur de cluster Kubernetes Engine (
roles/container.clusterAdmin) -
Pour accéder aux journaux et utiliser l'explorateur de journaux et Observability Analytics : Lecteur de journaux (
roles/logging.viewer)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Conditions requises
- Votre cluster GKE doit exécuter la version
1.36.0-gke.1601000ou une version ultérieure. - Activez Cloud Logging dans votre cluster GKE.
- Assurez-vous de disposer d'un autoscaler vertical de pods que vous souhaitez surveiller. Assurez-vous que les champs de l'autoscaler vertical de pods ne contiennent pas de données sensibles.
Coûts
Les tarifs de Cloud Logging s'appliquent lorsque vous activez Cloud Logging et collectez les journaux de décision de l'autoscaler de pods vertical.
Activer les journaux de décision de l'autoscaler vertical des pods
Les commandes des sections suivantes permettent d'exporter les journaux générés par KCP_VPA et de les enregistrer dans la destination logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" de Cloud Logging.
Activer les journaux sur un nouveau cluster
Pour créer un cluster avec les journaux de décision KCP_VPA activés, exécutez la commande suivante.
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--logging=SYSTEM,KCP_VPA
Remplacez les éléments suivants :
CLUSTER_NAME: nom du cluster que vous souhaitez créer ou mettre à jour.PROJECT_ID: ID de votre projet Cloud de Confiance .LOCATION: régions ou zones de calcul de votre cluster.
Activer les journaux sur un cluster existant
Pour activer les journaux de décision KCP_VPA sur un cluster existant, procédez comme suit :
Examinez la configuration existante du cluster. Si des composants de journalisation spécifiques sont déjà configurés sur le cluster, déterminez si vous souhaitez ajouter ou écraser la configuration de journalisation existante.
Pour activer les journaux de décision de l'autoscaler vertical des pods, exécutez la commande suivante. Si vous ajoutez une configuration existante, ajoutez également la configuration de journalisation existante à la commande.
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID \ --logging=SYSTEM,KCP_VPARemplacez les éléments suivants :
CLUSTER_NAME: nom du cluster que vous souhaitez créer ou mettre à jour.PROJECT_ID: ID de votre projet Cloud de Confiance .LOCATION: régions ou zones de calcul de votre cluster.
Vérifier que la journalisation est activée
Pour vérifier que les journaux de décision KCP_VPA sont activés sur un cluster, récupérez la configuration de journalisation mise à jour du cluster et consultez la liste des journaux. Pour ce faire, exécutez la commande suivante :
gcloud container clusters describe CLUSTER_NAME \
--location=LOCATION \
--flatten=loggingConfig \
--format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
Remplacez les éléments suivants :
CLUSTER_NAME: nom du cluster.LOCATION: régions ou zones de calcul de votre cluster.
Lorsque les journaux de décision KCP_VPA sont activés sur un cluster, le résultat ressemble à ce qui suit :
SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER,KCP_VPA
Afficher les journaux de l'autoscaler de pods vertical dans l'explorateur de journaux
Vous pouvez surveiller le comportement de l'autoscaler vertical des pods dans l'explorateur de journaux. Pour afficher les journaux de l'autoscaler vertical de pods, procédez comme suit :
Accédez à la page "Explorateur de journaux" :
Sélectionnez Tous les noms de journaux, puis recherchez
vpa-controllerdans les noms de journaux.L'explorateur de journaux affiche tous les journaux de l'autoscaler vertical de pods, y compris les journaux de tous les clusters pour lesquels l'autoscaler vertical de pods est activé dans le projet.
Vous pouvez filtrer les journaux à l'aide du nom du cluster ou de la charge de travail. Par exemple, pour lister les événements d'une charge de travail spécifique dans un cluster, spécifiez le nom du cluster et de la charge de travail à l'aide de la requête suivante :
resource.labels.cluster_name="CLUSTER_NAME" AND jsonPayload.target.name="WORKLOAD_NAME"Remplacez les éléments suivants :
CLUSTER_NAME: nom du cluster.WORKLOAD_NAME: nom de la charge de travail.
Désactiver les journaux de décision de l'autoscaling vertical des pods
Pour désactiver les journaux de décision
KCP_VPAsur un cluster existant, exécutez la commande suivante :gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID \ --logging=SYSTEMVérifiez que les journaux de décision
KCP_VPAsont désactivés. Pour ce faire, exécutez la commande suivante :gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --flatten=loggingConfig \ --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'Lorsque les journaux de décision
KCP_VPAsont désactivés sur un cluster, le résultat ressemble à ce qui suit :SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER
Types de journaux
Les événements de décision de l'autoscaler vertical des pods sont stockés dans Cloud Logging, à l'emplacement logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" qui se trouve dans _Default bucket dans le même projet que votre cluster GKE. Tous les événements enregistrés sont au format JSON et se trouvent dans le champ jsonPayload d'une entrée de journal.
Le type et la fréquence des journaux générés dépendent du mode d'autoscaling vertical des pods configuré pour votre charge de travail. Il existe quatre types de journaux VPA, classés par opération effectuée :
- Recommandation de mise à jour : chaque autoscaler vertical de pods génère un journal de recommandation de mise à jour toutes les minutes.
- Éviction de pod : chaque autoscaler vertical de pods génère un journal d'éviction de pod pour chaque pod lorsque l'autoscaler vertical de pods décide de redimensionner en mode
Recreate. - Appliquer la recommandation sur l'éviction : chaque autoscaler vertical de pods génère un journal d'application de recommandation pour chaque pod lorsque l'autoscaler vertical de pods décide de redimensionner en mode
Recreate. - Appliquer la recommandation sur place : chaque autoscaler vertical de pods génère un journal d'application de recommandation sur place pour chaque pod lorsque l'autoscaler vertical de pods décide de redimensionner en mode
InPlaceOrRecreate.
Les types de journaux que le contrôleur peut émettre dépendent du mode de l'autoscaler vertical de pods. Le tableau suivant liste les journaux qui peuvent être émis pour chaque mode.
| Mode de l'autoscaler vertical des pods | Types de journaux pouvant être émis |
|---|---|
Auto (obsolète) ou Recreate |
|
InPlaceOrRecreate |
|
Pour un autoscaler vertical de pods en mode InPlaceOrRecreate, lorsque In-place resize échoue, l'autoscaler se comporte comme en mode Recreate.
Mettre à jour la recommandation
Un journal de recommandations de mise à jour peut être généré avec les modes d'autoscaler vertical des pods suivants : Auto (obsolète), Recreate et InPlaceOrRecreate.
Le jsonPayload de ce journal de décisions inclut les champs suivants :
| Champ | Description |
|---|---|
vpaName |
Nom du VPA. |
vpaNamespace |
Espace de noms du VPA. |
target |
Charge de travail ciblée par ce VPA.
|
operation |
Opération en cours d'exécution. La valeur est l'une des suivantes :
|
state |
État de l'opération. La valeur est l'une des suivantes :
|
reason |
La raison explique pourquoi l'opération est ignorée ou échoue. Pour les opérations |
recommendedResources |
Recommandation brute. Cette valeur est identique au champ Status.Recommendation de l'objet VPA.
|
confidence |
Confiance de la recommandation. Ce champ existe lorsque l'état est succeeded. La valeur est l'une des suivantes :
|
Exemple de journal de recommandation de mise à jour :
{
"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"
}
Évincer le pod
Un journal de pod d'éviction est disponible avec les modes VPA Auto (obsolète) et Recreate.
Ce type de journal est également possible avec le mode VPA InPlaceOrRecreate si l'opération In-place resize échoue.
Le jsonPayload de ce journal de décisions inclut les champs suivants :
| Champ | Description |
|---|---|
vpaName |
Nom du VPA. |
vpaNamespace |
Espace de noms du VPA. |
target |
Charge de travail ciblée par ce VPA.
|
operation |
Opération en cours d'exécution. La valeur est l'une des suivantes :
|
state |
État de l'opération. La valeur est l'une des suivantes :
|
reason |
La raison explique pourquoi l'opération est ignorée ou a échoué. Pour les opérations |
pod |
Nom du pod. |
Exemple de journal d'éviction de pod :
{
"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"
}
Appliquer la recommandation concernant l'expulsion
Une recommandation d'application sur le journal d'éviction est disponible avec le mode VPA Auto (obsolète) et Recreate. Ce type de journal est également possible avec le mode VPA InPlaceOrRecreate si In-place resize échoue.
Le jsonPayload de ce journal de décisions inclut les champs suivants :
| Champ | Description |
|---|---|
vpaName |
Nom du VPA. |
vpaNamespace |
Espace de noms du VPA. |
target |
Charge de travail ciblée par ce VPA.
|
operation |
Opération en cours d'exécution. La valeur est l'une des suivantes :
|
state |
État de l'opération. La valeur est l'une des suivantes :
|
reason |
La raison explique pourquoi l'opération est ignorée ou échoue. Pour les opérations |
pod |
Nom du pod. |
appliedResources |
Ressources appliquées au pod.
|
confidence |
Degré de confiance de la recommandation. Ce champ existe lorsque l'état est succeeded. La valeur est l'une des suivantes :
|
Exemple d'application d'une recommandation dans le journal d'éviction :
{
"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"
}
Appliquer la recommandation sur place
Un journal d'application des recommandations sur place est disponible avec le mode VPA InPlaceOrRecreate.
Le jsonPayload de ce journal de décisions inclut les champs suivants :
| Champ | Description |
|---|---|
vpaName |
Nom du VPA. |
vpaNamespace |
Espace de noms du VPA. |
target |
Charge de travail ciblée par ce VPA.
|
operation |
Opération en cours d'exécution. La valeur est l'une des suivantes :
|
state |
État de l'opération. La valeur est l'une des suivantes :
|
reason |
La raison explique pourquoi l'opération est ignorée ou a échoué. Pour les opérations |
pod |
Nom du pod. |
appliedResources |
Ressources appliquées au pod.
|
confidence |
Degré de confiance de la recommandation. Ce champ existe lorsque l'état est succeeded. La valeur est l'une des suivantes :
|
Exemple d'application d'une recommandation dans le journal des modifications :
{
"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"
}
Dépannage
Cette section décrit les problèmes et les étapes de résolution liés aux événements de l'autoscaler vertical de pods.
Aucun événement
Si vous ne voyez aucun événement de décision de l'autoscaler vertical des pods, assurez-vous d'avoir effectué toutes les opérations suivantes :
- Vous avez activé Cloud Logging pour le cluster.
- Vous avez activé les journaux
KCP_VPApour le cluster. - Vous avez déployé au moins un objet
vpacorrectement configuré sur votre cluster.
Pour afficher la configuration de votre objet vpa, exécutez la commande suivante :
kubectl describe vpa $VPA_NAME
Si vous ne voyez toujours pas de journaux KCP_VPA, contactez l'assistanceCloud de Confiance .
Étapes suivantes
- Consultez À propos des journaux GKE.
- Comprendre vos journaux GKE.
- Découvrez comment trouver des journaux GKE spécifiques à l'aide d'exemples de requêtes.
- En savoir plus sur l'autoscaling vertical des pods