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.
-
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.
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 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 :
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.
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_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 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 :
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 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.
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
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 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 |
|
InPlaceOrRecreate |
|
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.
|
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 cas de réussite des opérations |
recommendedResources |
Recommandation brute. Il s'agit exactement du même champ Status.Recommendation que dans 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"
}
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.
|
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 cas de réussite des opérations |
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.
|
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 cas de réussite des opérations |
pod |
Nom du pod. |
appliedResources |
Ressources appliquées au pod.
|
confidence |
Niveau 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 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.
|
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 cas de réussite des opérations |
pod |
Nom du pod. |
appliedResources |
Ressources appliquées au pod.
|
confidence |
Niveau de confiance de la recommandation. Ce champ existe lorsque l'état est succeeded. La valeur est l'une des suivantes :
|
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_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