Recopila registros de eventos del escalador automático vertical de Pods

En esta página, se proporciona información sobre los eventos de decisión que emite el ajuste de escala automático vertical de Pods en Google Kubernetes Engine (GKE). Si analizas estos eventos, puedes obtener información sobre cómo el controlador del escalador automático vertical de Pods administra el escalamiento de tu carga de trabajo y comprender el proceso de toma de decisiones detrás de sus acciones.

El escalador automático vertical de Pods emite eventos de decisión, que se almacenan como entradas de registro en Cloud Logging.

Antes de comenzar

Asegúrate de completar los siguientes requisitos previos:

Selecciona o crea un proyecto

Puedes usar un proyecto existente o crear uno nuevo para este instructivo.

  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.

Habilita las APIs

Habilita las APIs de GKE y Cloud Logging.

Roles necesarios para habilitar las APIs

Para habilitar APIs, necesitas el permiso serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.

Habilitar las API

Configura Cloud Shell

En este instructivo, usarás Cloud Shell para ejecutar los comandos de gcloud y kubectl. Cloud Shell es un entorno de shell que se usa para administrar recursos alojados en Cloud de Confiance by S3NS. Viene preinstalado con Google Cloud CLI y la herramienta de línea de comandos de kubectl.

En la consola de Cloud de Confiance , activa Cloud Shell.

Activa Cloud Shell

Se abrirá una sesión de Cloud Shell dentro de un marco en la parte inferior en la consola.

Antes de ejecutar comandos en este instructivo, asegúrate de que tu proyecto predeterminado esté configurado como el ID del proyecto en el que deseas implementar la app de ejemplo. Si aún no está configurado, ejecuta el siguiente comando en Cloud Shell:

gcloud config set project PROJECT_ID

Reemplaza PROJECT_ID por el ID del proyecto.

Roles y permisos requeridos

Para obtener los permisos que necesitas para habilitar la generación de registros, y para acceder a ellos y procesarlos, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Requisitos

  • Tu clúster de GKE debe ejecutar la versión 1.36.0-gke.1601000 o una posterior.
  • Habilita Cloud Logging en tu clúster de GKE.
  • Asegúrate de tener un escalador automático vertical de Pods que quieras supervisar. Asegúrate de que los campos del escalador automático vertical de Pods no incluyan datos sensibles.

Costos

Se aplican los precios de Cloud Logging cuando habilitas Cloud Logging y recopilas registros de decisiones del escalador automático vertical de Pods.

Habilita los registros de decisiones del escalador automático vertical de Pods

Los comandos de las siguientes secciones permiten exportar los registros generados por KCP_VPA y guardarlos en el destino logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" dentro de Cloud Logging.

Habilita los registros en un clúster nuevo

Para crear un clúster nuevo con los registros de decisiones de KCP_VPA habilitados, ejecuta el siguiente comando.

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --project=PROJECT_ID \
    --logging=SYSTEM,KCP_VPA

Reemplaza lo siguiente:

  • CLUSTER_NAME: Es el nombre del clúster que deseas crear o actualizar.
  • PROJECT_ID: Es el ID del proyecto de Cloud de Confiance .
  • LOCATION: Son las regiones o zonas de procesamiento de tu clúster.

Habilita los registros en un clúster existente

Para habilitar los registros de decisiones de KCP_VPA en un clúster existente, haz lo siguiente:

  1. Revisa la configuración existente del clúster. Si el clúster ya tiene componentes de registro específicos configurados, decide si deseas agregar o reemplazar la configuración de registro existente.

  2. Para habilitar los registros de decisiones del escalador automático vertical de Pods, ejecuta el siguiente comando. Si vas a agregar la configuración a una existente, también debes agregar la configuración de registro existente al comando.

    gcloud container clusters update CLUSTER_NAME \
        --location=LOCATION \
        --project=PROJECT_ID \
        --logging=SYSTEM,KCP_VPA
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Es el nombre del clúster que deseas crear o actualizar.
    • PROJECT_ID: Es el ID del proyecto de Cloud de Confiance .
    • LOCATION: Regiones o zonas de procesamiento para tu clúster.

Verifica que el registro esté habilitado

Para verificar que los registros de decisiones de KCP_VPA estén habilitados en un clúster, recupera la configuración de registro actualizada del clúster y revisa la lista de registros. Para ello, ejecuta el siguiente comando:

gcloud container clusters describe CLUSTER_NAME \
    --location=LOCATION \
    --flatten=loggingConfig \
    --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'

Reemplaza lo siguiente:

Cuando se habilitan los registros de decisiones de KCP_VPA en un clúster, el resultado es similar al siguiente:

SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER,KCP_VPA

Visualiza los registros del escalador automático vertical de Pods en el Explorador de registros

Puedes supervisar el comportamiento del escalador automático vertical de Pods en el Explorador de registros. Para ver los registros del escalador automático vertical de Pods, completa los siguientes pasos:

  1. Ve a la página Explorador de registros:

    Ve al Explorador de registros

  2. Selecciona Todos los nombres de registro y busca los nombres de registro de vpa-controller.

    El Explorador de registros muestra todos los registros del escalador automático vertical de Pods, incluidos los de todos los clústeres que habilitaron los registros del escalador automático vertical de Pods en el proyecto.

  3. Puedes filtrar los registros por nombre de clúster o nombre de carga de trabajo. Por ejemplo, para enumerar los eventos de una carga de trabajo específica en un clúster, especifica el nombre del clúster y el nombre de la carga de trabajo con la siguiente consulta:

    resource.labels.cluster_name="CLUSTER_NAME" AND
    jsonPayload.target.name="WORKLOAD_NAME"
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: el nombre del clúster
    • WORKLOAD_NAME: Es el nombre de la carga de trabajo.

Inhabilita los registros de decisiones del ajuste de escala automático vertical de Pods

  1. Para inhabilitar los registros de decisiones de KCP_VPA en un clúster existente, ejecuta el siguiente comando:

    gcloud container clusters update CLUSTER_NAME \
        --location=LOCATION \
        --project=PROJECT_ID \
        --logging=SYSTEM
    
  2. Verifica que los registros de decisiones de KCP_VPA estén inhabilitados. Para ello, ejecuta el siguiente comando:

    gcloud container clusters describe CLUSTER_NAME \
        --location=LOCATION \
        --flatten=loggingConfig \
        --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
    

    Cuando los registros de decisiones de KCP_VPA están inhabilitados en un clúster, el resultado es similar al siguiente:

    SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER
    

Tipos de registros

Los eventos de decisión del escalador automático vertical de Pods se almacenan en Cloud Logging, en la ubicación logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" que se encuentra en _Default bucket en el mismo proyecto que tu clúster de GKE. Todos los eventos registrados están en formato JSON y se pueden encontrar en el campo jsonPayload de una entrada de registro.

El tipo y la frecuencia de los registros generados dependen del modo de ajuste de escala automático vertical de Pods configurado para tu carga de trabajo. Existen cuatro tipos de registros de VPA, categorizados según la operación que realizan:

  • Recomendación de actualización: Cada escalador automático vertical de Pods genera un nuevo registro de recomendación de actualización por minuto.
  • Evict Pod: Cada Vertical Pod Autoscaler genera un registro de expulsión de Pod para cada Pod cuando el Vertical Pod Autoscaler decide cambiar el tamaño en modo Recreate.
  • Aplicar recomendación en el desalojo: Cada escalador automático vertical de Pods genera un registro de aplicación de recomendación para cada Pod cuando el escalador automático vertical de Pods decide cambiar el tamaño en el modo Recreate.
  • Aplicar la recomendación en su lugar: Cada escalador automático vertical de Pods genera un registro de aplicar la recomendación en su lugar para cada Pod cuando el escalador automático vertical de Pods decide cambiar el tamaño en el modo InPlaceOrRecreate.

Los tipos de registros que puede emitir el controlador dependen del modo del escalador automático de Pods vertical. En la siguiente tabla, se enumeran los registros que se pueden emitir para cada modo.

Modo del escalador automático vertical de Pods Tipos de registros que se pueden emitir
Auto (obsoleto) o Recreate
  • Recomendación de actualización
  • Expulsar Pod
  • Aplica la recomendación sobre el desalojo
InPlaceOrRecreate
  • Recomendación de actualización
  • Aplicar la recomendación en el lugar
  • Desalojar Pod (este tipo de registro es posible cuando falla el cambio de tamaño de In-place)
  • Aplicar la recomendación en el desalojo (este tipo de registro es posible cuando falla el cambio de tamaño de In-place)

En el caso de un Vertical Pod Autoscaler con el modo InPlaceOrRecreate, cuando falla In-place resize, el escalador automático se comporta de la misma manera que el modo Recreate.

Recomendación de actualización

Se puede generar un registro de recomendaciones de actualización con los siguientes modos de ajuste de escala automático vertical de Pods: Auto (obsoleto), Recreate y InPlaceOrRecreate.

El jsonPayload de este registro de decisiones incluye los siguientes campos:

Campo Descripción
vpaName Es el nombre de la VPA.
vpaNamespace Es el espacio de nombres del VPA.
target Es la carga de trabajo a la que se dirige este VPA.
  • name: Es el nombre de la carga de trabajo.
  • kind: Es el tipo de carga de trabajo.
  • apiVersion: Es la versión de la API de la carga de trabajo.
operation Operación que se está ejecutando. El valor es uno de los siguientes:
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state Es el estado de la operación. El valor es uno de los siguientes:
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

El motivo explica por qué se omitió o falló la operación.

En el caso de las operaciones APPLY_RECOMMENDATION_IN_PLACE y APPLY_RECOMMENDATION_ON_EVICTION, se aclara que la recomendación aplicada podría ser diferente de la recomendación sin procesar de la operación UPDATE_RECOMMENDATION debido a las modificaciones aplicadas (como el límite o la proporción de recursos del piloto automático).

recommendedResources Es la recomendación sin procesar. Es exactamente igual al campo Status.Recommendation del objeto VPA.
  • containerName: Es el nombre del contenedor para el que se genera esta recomendación.
  • target: Es la recomendación real que se podría aplicar.
  • lowerBound: Es el límite inferior de la recomendación.
  • upperBound: Es el límite superior de la recomendación.
  • uncappedTarget: Es la recomendación antes de la limitación por límite inferior o superior.
confidence Es la confianza de la recomendación. Este campo existe cuando el estado es succeeded. El valor es uno de los siguientes:
  • LOW: El VPA procesó menos de 10 muestras de métricas.
  • HIGH: El VPA procesó 10 o más muestras de métricas.

Ejemplo de registro de recomendación de actualización:

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

Expulsar Pod

Un registro de Pod desalojado está disponible con el modo de VPA Auto (obsoleto) y Recreate. Este tipo de registro también es posible con el modo de VPA InPlaceOrRecreate si falla la operación In-place resize.

El jsonPayload de este registro de decisiones incluye los siguientes campos:

Campo Descripción
vpaName Es el nombre de la VPA.
vpaNamespace Es el espacio de nombres del VPA.
target Es la carga de trabajo a la que se dirige este VPA.
  • name: Es el nombre de la carga de trabajo.
  • kind: Es el tipo de carga de trabajo.
  • apiVersion: Es la versión de la API de la carga de trabajo.
operation Operación que se está ejecutando. El valor es uno de los siguientes:
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state Es el estado de la operación. El valor es uno de los siguientes:
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

El motivo explica por qué se omitió o falló la operación.

En el caso de éxito de las operaciones APPLY_RECOMMENDATION_IN_PLACE y APPLY_RECOMMENDATION_ON_EVICTION, el motivo aclara que la recomendación aplicada podría ser diferente de la recomendación sin procesar en la operación UPDATE_RECOMMENDATION debido a las modificaciones aplicadas (como el límite o la proporción de recursos del piloto automático).

pod Es el nombre del Pod.

Ejemplo de registro de Pod desalojado:

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

Aplica la recomendación sobre el desalojo

Hay disponible un registro de expulsión con la recomendación de aplicar en los modos de VPA Auto (obsoleto) y Recreate. Este tipo de registro también es posible con el modo de VPA InPlaceOrRecreate si falla In-place resize.

El jsonPayload de este registro de decisiones incluye los siguientes campos:

Campo Descripción
vpaName Es el nombre de la VPA.
vpaNamespace Es el espacio de nombres del VPA.
target Es la carga de trabajo a la que se dirige este VPA.
  • name: Es el nombre de la carga de trabajo.
  • kind: Es el tipo de carga de trabajo.
  • apiVersion: Es la versión de la API de la carga de trabajo.
operation Operación que se está ejecutando. El valor es uno de los siguientes:
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state Es el estado de la operación. El valor es uno de los siguientes:
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

El motivo explica por qué se omitió o falló la operación.

En el caso de las operaciones APPLY_RECOMMENDATION_IN_PLACE y APPLY_RECOMMENDATION_ON_EVICTION, se aclara que la recomendación aplicada podría ser diferente de la recomendación sin procesar de la operación UPDATE_RECOMMENDATION debido a las modificaciones aplicadas (como el límite o la proporción de recursos del piloto automático).

pod Es el nombre del Pod.
appliedResources Son los recursos aplicados al Pod.
  • containerName: Es el nombre del contenedor.
  • requests: Son las solicitudes de recursos aplicadas.
    • cpu: Es la CPU aplicada.
    • memory: Es la memoria aplicada.
  • limits: Son los límites de recursos aplicados.
    • cpu: Es la CPU aplicada.
    • memory: Es la memoria aplicada.
confidence Es la confianza de la recomendación. Este campo existe cuando el estado es succeeded. El valor es uno de los siguientes:
  • LOW: El VPA procesó menos de 10 muestras de métricas.
  • HIGH: El VPA procesó 10 o más muestras de métricas.

Ejemplo de aplicación de una recomendación en el registro de desalojo:

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

Aplicar la recomendación en el lugar

Un registro de aplicación de recomendaciones en el lugar está disponible con el modo de VPA InPlaceOrRecreate.

El jsonPayload de este registro de decisiones incluye los siguientes campos:

Campo Descripción
vpaName Es el nombre de la VPA.
vpaNamespace Es el espacio de nombres del VPA.
target Es la carga de trabajo a la que se dirige este VPA.
  • name: Es el nombre de la carga de trabajo.
  • kind: Es el tipo de carga de trabajo.
  • apiVersion: Es la versión de la API de la carga de trabajo.
operation Operación que se está ejecutando. El valor es uno de los siguientes:
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state Es el estado de la operación. El valor es uno de los siguientes:
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

El motivo explica por qué se omitió o falló la operación.

En el caso de éxito de las operaciones APPLY_RECOMMENDATION_IN_PLACE y APPLY_RECOMMENDATION_ON_EVICTION, el motivo aclara que la recomendación aplicada podría ser diferente de la recomendación sin procesar en la operación UPDATE_RECOMMENDATION debido a las modificaciones aplicadas (como el límite o la proporción de recursos del piloto automático).

pod Es el nombre del Pod.
appliedResources Son los recursos aplicados al Pod.
  • containerName: Es el nombre del contenedor.
  • requests: Son las solicitudes de recursos aplicadas.
    • cpu: Es la CPU aplicada.
    • memory: Es la memoria aplicada.
  • limits: Son los límites de recursos aplicados.
    • cpu: Es la CPU aplicada.
    • memory: Es la memoria aplicada.
confidence Es la confianza de la recomendación. Este campo existe cuando el estado es succeeded. El valor es uno de los siguientes:
  • LOW: El VPA procesó menos de 10 muestras de métricas.
  • HIGH: El VPA procesó 10 o más muestras de métricas.

Ejemplo de registro de aplicación de recomendación en el lugar:

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

Soluciona problemas

En esta sección, se describen los problemas y los pasos para resolverlos relacionados con los eventos del ajuste de escala automático vertical de Pods.

No hay eventos.

Si no ves ningún evento de decisión del ajuste de escala automático vertical de Pods, asegúrate de haber hecho lo siguiente:

  • Habilitaste Cloud Logging para el clúster.
  • Habilitaste los registros de KCP_VPA para el clúster.
  • Implementaste al menos un objeto vpa configurado correctamente en tu clúster.

Para ver la configuración del objeto vpa, ejecuta el siguiente comando:

kubectl describe vpa $VPA_NAME

Si aún no ves ningún registro de KCP_VPA, comunícate con el Cloud de Confiance equipo de asistencia.

¿Qué sigue?