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.
-
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.
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.
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.
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 ativar o registro de eventos do escalonador automático vertical de pods no seu cluster:
Administrador de cluster do Kubernetes Engine (
roles/container.clusterAdmin) -
Para acessar registros e usar o Explorador de registros e a Análise de observabilidade:
Visualizador de registros (
roles/logging.viewer)
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.1601000ou 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:
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.
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_VPASubstitua:
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:
CLUSTER_NAME: o nome do cluster.LOCATION: as regiões ou zonas de computação do cluster.
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:
Acesse a página do Explorador de registros:
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.
É 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
Para desativar os registros de decisões do
KCP_VPAem um cluster atual, execute o seguinte comando:gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID \ --logging=SYSTEMVerifique se os registros de decisão do
KCP_VPAestã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_VPAsã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 |
|
InPlaceOrRecreate |
|
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.
|
operation |
A operação em execução. O valor é um dos seguintes:
|
state |
Estado da operação. O valor é um dos seguintes:
|
reason |
O motivo explica por que a operação foi ignorada ou falhou. Para a operação |
recommendedResources |
A recomendação bruta. É exatamente igual ao campo Status.Recommendation no objeto VPA.
|
confidence |
Confiança da recomendação. Esse campo existe quando o estado é succeeded. O valor é um dos seguintes:
|
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.
|
operation |
A operação em execução. O valor é um dos seguintes:
|
state |
O estado da operação. O valor é um dos seguintes:
|
reason |
O motivo explica por que a operação foi ignorada ou falhou. Para a operação |
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.
|
operation |
A operação em execução. O valor é um dos seguintes:
|
state |
Estado da operação. O valor é um dos seguintes:
|
reason |
O motivo explica por que a operação foi ignorada ou falhou. Para a operação |
pod |
O nome do pod. |
appliedResources |
Os recursos aplicados ao pod.
|
confidence |
A confiança da recomendação. Esse campo existe quando o estado é succeeded. O valor é um dos seguintes:
|
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.
|
operation |
A operação em execução. O valor é um dos seguintes:
|
state |
O estado da operação. O valor é um dos seguintes:
|
reason |
O motivo explica por que a operação foi ignorada ou falhou. Para a operação |
pod |
O nome do pod. |
appliedResources |
Os recursos aplicados ao pod.
|
confidence |
A confiança da recomendação. Esse campo existe quando o estado é succeeded. O valor é um dos seguintes:
|
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_VPApara o cluster. - Você implantou pelo menos um objeto
vpaconfigurado 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
- Consulte Sobre os registros do GKE.
- Entenda seus registros do GKE.
- Saiba como encontrar registros específicos do GKE usando consultas de amostra.
- Saiba como otimizar o escalonamento automático de pods com base em métricas.
- Saiba mais sobre o escalonamento automático vertical de pods.