Coletar registros de eventos do escalonador automático vertical de pods

Nesta página, você encontra informações sobre eventos de decisão emitidos pelo escalonador automático vertical de pods no Google Kubernetes Engine (GKE). Ao analisar esses eventos, é possível entender como o controlador do escalonador automático vertical de pods gerencia o escalonamento da sua carga de trabalho e o processo de tomada de decisões por trás das ações dele.

O escalonador automático vertical de pods emite eventos de decisão, que são armazenados como entradas de registro no Cloud Logging.

Antes de começar

Siga os seguintes pré-requisitos:

Escolha ou crie um projeto

Você pode usar um projeto existente ou criar um novo para fins deste tutorial.

  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.

Ative as APIs

Ative as APIs GKE e Cloud Logging.

Funções necessárias para ativar APIs

Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

Ativar as APIs

Configurar o Cloud Shell

Neste tutorial, use o Cloud Shell para executar os comandos gcloud e kubectl. O Cloud Shell é um ambiente shell para gerenciar recursos hospedados no Cloud de Confiance by S3NS. Ele vem pré-instalado com a Google Cloud CLI e a ferramenta de linha de comando kubectl.

No console do Cloud de Confiance , ative o Cloud Shell.

Ativar o Cloud Shell

Uma sessão do Cloud Shell é aberta dentro de um quadro inferior no console.

Antes de executar comandos neste tutorial, verifique se o projeto padrão está definido como ID do projeto em que você quer implantar o aplicativo de amostra. Execute o seguinte comando no Cloud Shell, caso ele ainda não esteja definido:

gcloud config set project PROJECT_ID

Substitua PROJECT_ID pelo ID do projeto.

Papéis e permissões necessárias

Para receber as permissões necessárias para ativar a geração de registros e acessar e processar registros, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Requisitos

  • Seu cluster do GKE precisa estar executando a versão 1.36.0-gke.1601000 ou mais recente.
  • Ative o Cloud Logging no cluster do GKE.
  • Verifique se você tem um escalonador automático vertical de pods que quer monitorar. Verifique se os campos do escalonador automático vertical de pods não incluem informações confidenciais, sensíveis ou de identificação pessoal.

Custos

Os preços do Cloud Logging são aplicáveis quando você ativa o Cloud Logging e coleta registros de decisão do escalonador automático vertical de pods.

Ativar os registros de decisões do escalonador automático vertical de pods

Os comandos nas seções a seguir permitem exportar os registros gerados pelo KCP_VPA e salvá-los no destino logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" no Cloud Logging.

Ativar registros em um novo cluster

Para criar um cluster com os registros de decisão KCP_VPA ativados, execute o seguinte comando.

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

Substitua:

  • CLUSTER_NAME: o nome do cluster que você quer criar ou atualizar.
  • PROJECT_ID: o ID do projeto do Cloud de Confiance .
  • LOCATION: as regiões ou zonas de computação do cluster.

Ativar registros em um cluster atual

Para ativar os registros de decisões do KCP_VPA em um cluster atual, faça o seguinte:

  1. Analise a configuração atual do cluster. Se o cluster já tiver componentes de geração de registros específicos configurados, decida se você quer adicionar ou substituir a configuração de geração de registros atual.

  2. Para ativar os registros de decisão do escalonador automático vertical de pods, execute o seguinte comando: Se você estiver adicionando a uma configuração atual, adicione também a configuração de geração de registros ao comando.

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

    Substitua:

    • CLUSTER_NAME: nome do cluster que você quer criar ou atualizar.
    • PROJECT_ID: o ID do projeto do Cloud de Confiance .
    • LOCATION: regiões ou zonas de computação do cluster.

Verificar se a geração de registros está ativada

Para verificar se os registros de decisão KCP_VPA estão ativados em um cluster, recupere a configuração de geração de registros atualizada do cluster e analise a lista de registros. Para isso, execute o seguinte comando:

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

Substitua:

Quando os registros de decisão KCP_VPA estão ativados em um cluster, a saída é semelhante a esta:

SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER,KCP_VPA

Conferir registros do escalonador automático vertical de pods na Análise de registros

É possível monitorar o comportamento do escalonador automático vertical de pods no Análise de Registros. Para conferir os registros do escalonador automático vertical de pods, siga estas etapas:

  1. Acesse a página do Explorador de registros:

    Acessar a Análise de registros

  2. Selecione Todos os nomes de registros e pesquise vpa-controller.

    O Explorador de registros mostra todos os registros do escalonador automático vertical de pods, incluindo registros de todos os clusters que ativaram os registros do escalonador automático vertical de pods no projeto.

  3. É possível filtrar os registros usando o nome do cluster ou da carga de trabalho. Por exemplo, para listar eventos de uma carga de trabalho específica em um cluster, especifique o nome do cluster e da carga de trabalho usando a seguinte consulta:

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

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • WORKLOAD_NAME: o nome da carga de trabalho.

Desativar os registros de decisões do escalonamento automático vertical de pods

  1. Para desativar os registros de decisões do KCP_VPA em um cluster atual, execute o seguinte comando:

    gcloud container clusters update CLUSTER_NAME \
        --location=LOCATION \
        --project=PROJECT_ID \
        --logging=SYSTEM
    
  2. Verifique se os registros de decisão do KCP_VPA estão desativados. Para isso, execute o seguinte comando:

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

    Quando os registros de decisões do KCP_VPA são desativados em um cluster, a saída é semelhante a esta:

    SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER
    

Tipos de registro

Os eventos de decisão do escalonador automático vertical de pods são armazenados no Cloud Logging, no local logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" que está em _Default bucket no mesmo projeto do cluster do GKE. Todos os eventos registrados estão no formato JSON e podem ser encontrados no campo jsonPayload de uma entrada de registro.

O tipo e a frequência dos registros gerados dependem do modo de escalonamento automático vertical de pods configurado para sua carga de trabalho. Há quatro tipos de registros da VPA, categorizados pela operação que realizam:

  • Atualizar recomendação: cada escalonador automático vertical de pods gera um novo registro de recomendação de atualização a cada minuto.
  • Remover pod: cada escalonador automático vertical de pods gera um registro de remoção de pod para cada pod quando o escalonador automático vertical de pods decide redimensionar no modo Recreate.
  • Aplicar recomendação na remoção: cada escalonador automático vertical de pods gera um registro de recomendação de aplicação para cada pod quando o escalonador automático vertical de pods decide redimensionar no modo Recreate.
  • Aplicar recomendação no lugar: cada escalonador automático vertical de pods gera um registro de aplicar recomendação no lugar para cada pod quando o escalonador automático vertical de pods decide redimensionar no modo InPlaceOrRecreate.

Os tipos de registros que o controlador pode emitir dependem do modo do escalonador automático vertical de pods. A tabela a seguir lista os registros que podem ser emitidos para cada modo.

Modo do escalonador automático vertical de pods Tipos de registros que podem ser emitidos
Auto (descontinuado) ou Recreate
  • Recomendação de atualização
  • Remover pod
  • Aplicar recomendação na remoção
InPlaceOrRecreate
  • Recomendação de atualização
  • Aplicar recomendação no lugar
  • Remover pod (esse tipo de registro é possível quando o redimensionamento de In-place falha)
  • Aplicar a recomendação na remoção (esse tipo de registro é possível quando o redimensionamento de In-place falha)

Para um escalonador automático vertical de pods com modo InPlaceOrRecreate, quando In-place resize falha, o escalonador automático tem o mesmo comportamento do modo Recreate.

Recomendação de atualização

Um registro de recomendação de atualização pode ser gerado com os seguintes modos de escalonador automático vertical de pods: Auto (descontinuado), Recreate e InPlaceOrRecreate.

O jsonPayload desse registro de decisão inclui os seguintes campos:

Campo Descrição
vpaName O nome do VPA.
vpaNamespace O namespace do VPA.
target A carga de trabalho que esse VPA está segmentando.
  • name: o nome da carga de trabalho.
  • kind: o tipo de carga de trabalho.
  • apiVersion: a versão da API da carga de trabalho.
operation A operação em execução. O valor é um dos seguintes:
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state Estado da operação. O valor é um dos seguintes:
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

O motivo explica por que a operação foi ignorada ou falhou.

Para a operação APPLY_RECOMMENDATION_IN_PLACE e o caso de sucesso APPLY_RECOMMENDATION_ON_EVICTION, ele esclarece que a recomendação aplicada pode ser diferente da recomendação bruta na operação UPDATE_RECOMMENDATION devido a modificações aplicadas (como limite ou proporção de recursos do piloto automático).

recommendedResources A recomendação bruta. É exatamente igual ao campo Status.Recommendation no objeto VPA.
  • containerName: o nome do contêiner a que esta recomendação se refere.
  • target: a recomendação real que pode ser aplicada.
  • lowerBound: o limite inferior da recomendação.
  • upperBound: o limite superior da recomendação.
  • uncappedTarget: a recomendação antes da limitação por limite inferior ou superior.
confidence Confiança da recomendação. Esse campo existe quando o estado é succeeded. O valor é um dos seguintes:
  • LOW: o VPA processou menos de 10 exemplos de métricas.
  • HIGH: o VPA processou 10 ou mais exemplos de métricas.

Exemplo de registro de recomendação de atualização:

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

Remover pod

Um registro de pod de remoção está disponível com o modo VPA Auto (descontinuado) e Recreate. Esse tipo de registro também é possível com o modo VPA InPlaceOrRecreate se a operação In-place resize falhar.

O jsonPayload desse registro de decisão inclui os seguintes campos:

Campo Descrição
vpaName O nome do VPA.
vpaNamespace O namespace do VPA.
target A carga de trabalho que esse VPA está segmentando.
  • name: o nome da carga de trabalho.
  • kind: o tipo de carga de trabalho.
  • apiVersion: a versão da API da carga de trabalho.
operation A operação em execução. O valor é um dos seguintes:
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state O estado da operação. O valor é um dos seguintes:
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

O motivo explica por que a operação foi ignorada ou falhou.

Para a operação APPLY_RECOMMENDATION_IN_PLACE e o caso de sucesso APPLY_RECOMMENDATION_ON_EVICTION, o motivo esclarece que a recomendação aplicada pode ser diferente da recomendação bruta na operação UPDATE_RECOMMENDATION devido às modificações aplicadas (como limite ou proporção de recursos do piloto automático).

pod O nome do pod.

Exemplo de registro de remoção 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"
}

Aplicar recomendação na remoção

Uma recomendação de aplicação no registro de remoção está disponível com o modo VPA Auto (descontinuado) e Recreate. Esse tipo de registro também é possível com o modo VPA InPlaceOrRecreate se In-place resize falhar.

O jsonPayload desse registro de decisão inclui os seguintes campos:

Campo Descrição
vpaName O nome do VPA.
vpaNamespace O namespace do VPA.
target A carga de trabalho que esse VPA está segmentando.
  • name: o nome da carga de trabalho.
  • kind: o tipo de carga de trabalho.
  • apiVersion: a versão da API da carga de trabalho.
operation A operação em execução. O valor é um dos seguintes:
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state Estado da operação. O valor é um dos seguintes:
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

O motivo explica por que a operação foi ignorada ou falhou.

Para a operação APPLY_RECOMMENDATION_IN_PLACE e o caso de sucesso APPLY_RECOMMENDATION_ON_EVICTION, ele esclarece que a recomendação aplicada pode ser diferente da recomendação bruta na operação UPDATE_RECOMMENDATION devido a modificações aplicadas (como limite ou proporção de recursos do piloto automático).

pod O nome do pod.
appliedResources Os recursos aplicados ao pod.
  • containerName: o nome do contêiner.
  • requests: as solicitações de recursos aplicadas.
    • cpu: a CPU aplicada.
    • memory: a memória aplicada.
  • limits: os limites de recursos aplicados.
    • cpu: a CPU aplicada.
    • memory: a memória aplicada.
confidence A confiança da recomendação. Esse campo existe quando o estado é succeeded. O valor é um dos seguintes:
  • LOW: o VPA processou menos de 10 exemplos de métricas.
  • HIGH: o VPA processou 10 ou mais exemplos de métricas.

Exemplo de aplicação de recomendação no registro de remoção:

{
 "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 recomendação no lugar

Um registro de aplicação de recomendação in loco está disponível com o modo VPA InPlaceOrRecreate.

O jsonPayload desse registro de decisão inclui os seguintes campos:

Campo Descrição
vpaName O nome do VPA.
vpaNamespace O namespace do VPA.
target A carga de trabalho que esse VPA está segmentando.
  • name: o nome da carga de trabalho.
  • kind: o tipo de carga de trabalho.
  • apiVersion: a versão da API da carga de trabalho.
operation A operação em execução. O valor é um dos seguintes:
  • UPDATE_RECOMMENDATION
  • EVICT_POD
  • APPLY_RECOMMENDATION_IN_PLACE
  • APPLY_RECOMMENDATION_ON_EVICTION
state O estado da operação. O valor é um dos seguintes:
  • SUCCEEDED
  • SKIPPED
  • FAILED
reason

O motivo explica por que a operação foi ignorada ou falhou.

Para a operação APPLY_RECOMMENDATION_IN_PLACE e o caso de sucesso APPLY_RECOMMENDATION_ON_EVICTION, o motivo esclarece que a recomendação aplicada pode ser diferente da recomendação bruta na operação UPDATE_RECOMMENDATION devido às modificações aplicadas (como limite ou proporção de recursos do piloto automático).

pod O nome do pod.
appliedResources Os recursos aplicados ao pod.
  • containerName: o nome do contêiner.
  • requests: as solicitações de recursos aplicadas.
    • cpu: a CPU aplicada.
    • memory: a memória aplicada.
  • limits: os limites de recursos aplicados.
    • cpu: a CPU aplicada.
    • memory: a memória aplicada.
confidence A confiança da recomendação. Esse campo existe quando o estado é succeeded. O valor é um dos seguintes:
  • LOW: o VPA processou menos de 10 exemplos de métricas.
  • HIGH: o VPA processou 10 ou mais exemplos de métricas.

Exemplo de aplicação de recomendação no registro:

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

Solução de problemas

Esta seção descreve problemas e etapas de resolução relacionados a eventos do escalonador automático vertical de pods.

Nenhum evento

Se você não encontrar nenhum evento de decisão do escalonador automático vertical de pods, verifique se fez o seguinte:

  • Você ativou o Cloud Logging para o cluster.
  • Você ativou os registros KCP_VPA para o cluster.
  • Você implantou pelo menos um objeto vpa configurado corretamente no cluster.

Para conferir a configuração do objeto vpa, execute o seguinte comando:

kubectl describe vpa $VPA_NAME

Se você ainda não encontrar nenhum registro de KCP_VPA, entre em contato com o suporte doCloud de Confiance .

A seguir