Collecter les journaux d'événements de l'autoscaler vertical des pods

Cette page fournit des informations sur les événements de décision émis par l'autoscaler vertical de pods dans Google Kubernetes Engine (GKE). En analysant ces événements, vous pouvez à la fois obtenir des informations sur la façon dont le contrôleur d'autoscaler de pods verticaux gère le scaling de votre charge de travail et comprendre le processus de prise de décision derrière ses actions.

L'autoscaler de pods vertical é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.

  1. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

Activer les API

Activez les API GKE et Cloud Logging.

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.

Activer les API

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.

Activer 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 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.1601000 ou ultérieure.
  • Activez Cloud Logging dans votre cluster GKE.
  • Assurez-vous de disposer d'un autoscaler de pods vertical que vous souhaitez surveiller. Assurez-vous que les champs de l'autoscaler vertical des 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 à la destination logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" dans 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 :

  1. Examinez la configuration existante du cluster. Si le cluster comporte déjà des composants de journalisation spécifiques, décidez si vous souhaitez ajouter ou remplacer la configuration de journalisation existante.

  2. Pour activer les journaux de décision de l'autoscaler vertical de 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_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.

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 :

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 verticaux dans l'explorateur de journaux

Vous pouvez surveiller le comportement de l'autoscaler de pods verticaux dans l'explorateur de journaux. Pour afficher les journaux de l'autoscaler vertical des pods, procédez comme suit :

  1. Accédez à la page "Explorateur de journaux" :

    Accéder à l'explorateur de journaux

  2. Sélectionnez Tous les noms de journaux, puis recherchez vpa-controller dans les noms de journaux.

    L'explorateur de journaux affiche tous les journaux de l'autoscaler de pods vertical, y compris ceux de tous les clusters pour lesquels les journaux de l'autoscaler de pods vertical ont été activés dans le projet.

  3. 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 le nom 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

  1. Pour désactiver les journaux de décision KCP_VPA sur un cluster existant, exécutez la commande suivante :

    gcloud container clusters update CLUSTER_NAME \
        --location=LOCATION \
        --project=PROJECT_ID \
        --logging=SYSTEM
    
  2. Vérifiez que les journaux de décision KCP_VPA sont 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_VPA sont 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 de pods vertical 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 journalisé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 de pods vertical génère un journal de recommandation de mise à jour toutes les minutes.
  • Évincer le 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 de pods vertical génère un journal d'application de recommandation pour chaque pod lorsque l'autoscaler de pods vertical décide de redimensionner en mode Recreate.
  • Appliquer la recommandation sur place : chaque autoscaler de pods vertical génère un journal d'application de recommandation sur place pour chaque pod lorsque l'autoscaler de pods vertical 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
  • Mettre à jour une recommandation
  • Expulser un pod
  • Appliquer la recommandation sur l'expulsion
InPlaceOrRecreate
  • Mettre à jour une recommandation
  • Appliquer la recommandation sur place
  • Expulser le pod (ce type de journal est possible en cas d'échec du redimensionnement de In-place)
  • Appliquer la recommandation en cas d'éviction (ce type de journal est possible en cas d'échec du redimensionnement In-place)

Pour un autoscaler de pods vertical en mode InPlaceOrRecreate, lorsque In-place resize échoue, l'autoscaler se comporte comme en mode Recreate.

Mettre à jour une recommandation

Un journal de recommandations de mise à jour peut être généré avec les modes d'autoscaler vertical de pods suivants : Auto (obsolète), Recreate et InPlaceOrRecreate.

Le jsonPayload de ce journal de décision inclut les champs suivants :

Champ Description
vpaName Nom de l'autorité de validation de la propriété.
vpaNamespace Espace de noms du VPA.
target Charge de travail ciblée par ce VPA.
  • name : nom de la charge de travail.
  • kind : type de charge de travail.
  • apiVersion : version de l'API de la charge de travail.
operation Opération en cours d'exécution. La valeur est l'une des suivantes :
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state État de l'opération. La valeur est l'une des suivantes :
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

La raison explique pourquoi l'opération est ignorée ou a échoué.

Pour les cas de réussite des opérations APPLY_RECOMMENDATION_IN_PLACE et APPLY_RECOMMENDATION_ON_EVICTION, il est précisé que la recommandation appliquée peut être différente de la recommandation brute de l'opération UPDATE_RECOMMENDATION en raison des modifications appliquées (comme le capping ou le ratio de ressources du pilote automatique).

recommendedResources Recommandation brute. Il s'agit exactement du même champ Status.Recommendation que dans l'objet VPA.
  • containerName : nom du conteneur auquel s'applique cette recommandation.
  • target : recommandation réelle qui peut être appliquée.
  • lowerBound : limite inférieure de la recommandation.
  • upperBound : limite supérieure de la recommandation.
  • uncappedTarget : recommandation avant plafonnement par limite inférieure ou supérieure.
confidence Confiance de la recommandation. Ce champ existe lorsque l'état est succeeded. La valeur est l'une des suivantes :
  • LOW : le VPA a traité moins de 10 échantillons de métriques.
  • HIGH : le VPA a traité au moins 10 échantillons de métriques.

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"
}

Expulser un 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écision inclut les champs suivants :

Champ Description
vpaName Nom de l'autorité de validation de la propriété.
vpaNamespace Espace de noms du VPA.
target Charge de travail ciblée par ce VPA.
  • name : nom de la charge de travail.
  • kind : type de charge de travail.
  • apiVersion : version de l'API de la charge de travail.
operation Opération en cours d'exécution. La valeur est l'une des suivantes :
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state État de l'opération. La valeur est l'une des suivantes :
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

La raison explique pourquoi l'opération est ignorée ou a échoué.

Pour les cas de réussite des opérations APPLY_RECOMMENDATION_IN_PLACE et APPLY_RECOMMENDATION_ON_EVICTION, la raison précise que la recommandation appliquée peut être différente de la recommandation brute dans l'opération UPDATE_RECOMMENDATION en raison des modifications appliquées (telles que le capping ou le ratio de ressources du pilote automatique).

pod Nom du pod.

Exemple de journal de pod d'éviction :

{
 "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 sur l'expulsion

Un journal d'application des recommandations sur l'é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écision inclut les champs suivants :

Champ Description
vpaName Nom de l'autorité de validation de la propriété.
vpaNamespace Espace de noms du VPA.
target Charge de travail ciblée par ce VPA.
  • name : nom de la charge de travail.
  • kind : type de charge de travail.
  • apiVersion : version de l'API de la charge de travail.
operation Opération en cours d'exécution. La valeur est l'une des suivantes :
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state État de l'opération. La valeur est l'une des suivantes :
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

La raison explique pourquoi l'opération est ignorée ou a échoué.

Pour les cas de réussite des opérations APPLY_RECOMMENDATION_IN_PLACE et APPLY_RECOMMENDATION_ON_EVICTION, il est précisé que la recommandation appliquée peut être différente de la recommandation brute de l'opération UPDATE_RECOMMENDATION en raison des modifications appliquées (comme le capping ou le ratio de ressources du pilote automatique).

pod Nom du pod.
appliedResources Ressources appliquées au pod.
  • containerName : nom du conteneur.
  • requests : demandes de ressources appliquées.
    • cpu : processeur appliqué.
    • memory : mémoire appliquée.
  • limits : limites de ressources appliquées.
    • cpu : processeur appliqué.
    • memory : mémoire appliquée.
confidence Niveau de confiance de la recommandation. Ce champ existe lorsque l'état est succeeded. La valeur est l'une des suivantes :
  • LOW : le VPA a traité moins de 10 échantillons de métriques.
  • HIGH : le VPA a traité au moins 10 échantillons de métriques.

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 des recommandations appliquées est disponible avec le mode VPA InPlaceOrRecreate.

Le jsonPayload de ce journal de décision inclut les champs suivants :

Champ Description
vpaName Nom de l'autorité de validation de la propriété.
vpaNamespace Espace de noms du VPA.
target Charge de travail ciblée par ce VPA.
  • name : nom de la charge de travail.
  • kind : type de charge de travail.
  • apiVersion : version de l'API de la charge de travail.
operation Opération en cours d'exécution. La valeur est l'une des suivantes :
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state État de l'opération. La valeur est l'une des suivantes :
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

La raison explique pourquoi l'opération est ignorée ou a échoué.

Pour les cas de réussite des opérations APPLY_RECOMMENDATION_IN_PLACE et APPLY_RECOMMENDATION_ON_EVICTION, la raison précise que la recommandation appliquée peut être différente de la recommandation brute dans l'opération UPDATE_RECOMMENDATION en raison des modifications appliquées (telles que le capping ou le ratio de ressources du pilote automatique).

pod Nom du pod.
appliedResources Ressources appliquées au pod.
  • containerName : nom du conteneur.
  • requests : demandes de ressources appliquées.
    • cpu : processeur appliqué.
    • memory : mémoire appliquée.
  • limits : limites de ressources appliquées.
    • cpu : processeur appliqué.
    • memory : mémoire appliquée.
confidence Niveau de confiance de la recommandation. Ce champ existe lorsque l'état est succeeded. La valeur est l'une des suivantes :
  • LOW : le VPA a traité moins de 10 échantillons de métriques.
  • HIGH : le VPA a traité au moins 10 échantillons de métriques.

Exemple de journal d'application de recommandation sur place :

{
 "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 d'autoscaler vertical de 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_VPA pour le cluster.
  • Vous avez déployé au moins un objet vpa correctement 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