Nesta página, descrevemos as métricas e os painéis disponíveis para monitorar a latência de inicialização de cargas de trabalho do Google Kubernetes Engine (GKE) e dos nós do cluster subjacentes. É possível usar as métricas para rastrear, resolver problemas e reduzir a latência de inicialização.
Esta página é destinada a administradores e operadores de plataforma que precisam monitorar e otimizar a latência de inicialização das cargas de trabalho. Para saber mais sobre papéis comuns referenciados no conteúdo Google Cloud , consulte Tarefas e papéis de usuário comuns do GKE Enterprise.
Visão geral
A latência de inicialização afeta significativamente a forma como o aplicativo responde a picos de tráfego, a rapidez com que as réplicas se recuperam de interrupções e a eficiência dos custos operacionais dos clusters e das cargas de trabalho. Monitorar a latência de inicialização das cargas de trabalho pode ajudar a detectar degradações de latência e acompanhar o impacto das atualizações de carga de trabalho e infraestrutura na latência de inicialização.
Otimizar a latência de inicialização da carga de trabalho tem os seguintes benefícios:
- Reduz a latência de resposta do serviço aos usuários durante picos de tráfego.
- Reduz a capacidade de veiculação em excesso necessária para absorver picos de demanda enquanto novas réplicas são criadas.
- Reduz o tempo de inatividade dos recursos que já foram implantados e estão aguardando a inicialização dos recursos restantes durante os cálculos em lote.
Antes de começar
Antes de começar, veja se você realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a CLI do Google Cloud para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a gcloud CLI anteriormente, instale a versão
mais recente executando
gcloud components update
.
Ative as APIs Cloud Logging e Cloud Monitoring.
Requisitos
Para conferir métricas e painéis de latência de inicialização de cargas de trabalho, o cluster do GKE precisa atender aos seguintes requisitos:
- Você precisa ter o GKE versão 1.31.1-gke.1678000 ou mais recente.
- É necessário configurar a coleta de métricas do sistema.
- Configure a coleta de registros do sistema.
- Ative as métricas de estado do kube com
o componente
POD
nos clusters para conferir as métricas de pod e de contêiner.
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:
-
Acessar clusters, nós e cargas de trabalho do GKE:
Visualizador do Kubernetes Engine (
roles/container.viewer
) no seu projeto -
Acesse as métricas de latência de inicialização e confira os painéis:
Leitor do Monitoring (
roles/monitoring.viewer
) no seu projeto -
Acesse os registros com informações de latência, como eventos de extração de imagem do Kubelet, e acesse-os no Logs Explorer e na Análise de registros:
Visualizador de registros (
roles/logging.viewer
) no seu 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 por meio de papéis personalizados ou de outros papéis predefinidos.
Métricas de latência de inicialização
As métricas de latência de inicialização são incluídas nas métricas do sistema do GKE e são exportadas para o Cloud Monitoring no mesmo projeto que o cluster do GKE.
Os nomes das métricas do Cloud Monitoring nesta tabela precisam ser prefixados com
kubernetes.io/
. Esse prefixo foi omitido das
entradas na tabela.
Tipo de métrica (níveis da hierarquia de recursos) Nome de exibição |
|
---|---|
Tipo, Classe, Unidade
Recursos monitorados |
Descrição Rótulos |
pod/latencies/pod_first_ready
(project)
Latência do primeiro pod pronto |
|
GAUGE , Double , s
k8s_pod |
A latência de inicialização completa do pod (do Created ao Ready ), incluindo extrações de imagem. Amostras coletadas a cada 60 segundos. |
node/latencies/startup
(project)
Latência de inicialização do nó |
|
GAUGE , INT64 , s
k8s_node |
A latência total de inicialização do nó, da CreationTimestamp da instância do GCE para a Kubernetes node ready pela primeira vez. Amostras coletadas a cada 60 segundos.accelerator_family : uma classificação de nós com base em aceleradores de hardware: gpu , tpu , cpu .
kube_control_plane_available : se a solicitação de criação de nó foi recebida quando o KCP (plano de controle do kube) estava disponível.
|
autoscaler/latencies/per_hpa_recommendation_scale_latency_seconds
(projeto)
Latência de escalonamento de recomendação de HPA |
|
GAUGE , DOUBLE , s
k8s_scale |
Latência da recomendação de escalonamento do escalonador automático horizontal de pods (HPA, na sigla em inglês) (tempo entre a criação das métricas e a aplicação da recomendação de escalonamento correspondente ao servidor de API) para o destino do HPA. Amostras coletadas a cada 60 segundos. Após a amostragem, os dados não são visíveis por até 20 segundos.metric_type : o tipo de origem da métrica. Precisa ser "ContainerResource" , "External" , "Object" , "Pods" ou "Resource" .
|
Conferir o painel "Latência de inicialização" para cargas de trabalho
O painel Latência de inicialização para cargas de trabalho está disponível apenas para implantações. Para conferir as métricas de latência de inicialização das implantações, siga estas etapas no console do Google Cloud:
Acesse a página Cargas de trabalho.
Para abrir a visualização Detalhes da implantação, clique no nome da carga de trabalho que você quer inspecionar.
Clique na guia Observabilidade.
Selecione Latência de inicialização no menu à esquerda.
Conferir a distribuição de latência de inicialização dos pods
A latência de inicialização dos pods se refere à latência total de inicialização, incluindo extrações
de imagem, que mede o tempo do status Created
do pod até o
status Ready
. É possível avaliar a latência de inicialização dos pods usando os
seguintes gráficos:
Gráfico Distribuição de latência de inicialização de pods: mostra os percentis de latência de inicialização de pods (percentil 50, 95 e 99) calculados com base nas observações de eventos de inicialização de pods em intervalos fixos de três horas, por exemplo, 12h-15h e 15h-18h. Você pode usar esse gráfico para:
- Entenda a latência de inicialização do pod de referência.
- Identifique mudanças na latência de inicialização do pod ao longo do tempo.
- Correlacione as mudanças na latência de inicialização do pod com eventos recentes, como implantações de carga de trabalho ou eventos do escalonador automático de cluster. É possível selecionar os eventos na lista Anotações na parte de cima do painel.

Gráfico Contagem de inicialização de pods: mostra a contagem de pods que foram iniciados durante os intervalos de tempo selecionados. Use este gráfico para os seguintes fins:
- Entenda os tamanhos de amostra de pod usados para calcular os percentis da distribuição de latência de inicialização de pod para um determinado intervalo de tempo.
- Entenda as causas de inicializações de pods, como implantações de cargas de trabalho ou eventos do escalonador automático horizontal de pods. Você pode selecionar os eventos na lista Anotações na parte de cima do painel.

Conferir a latência de inicialização de pods individuais
É possível conferir a latência de inicialização de pods individuais no gráfico de linha do tempo Latência de primeiro estado pronto do pod e na lista associada.
- Use o gráfico de linha Latência de primeiro estado pronto do pod para correlacionar as inicializações de pods individuais com eventos recentes, como o Autoescalador de pods horizontal ou o Autoescalador de cluster. É possível selecionar esses eventos na lista Anotações na parte de cima do painel. Esse gráfico ajuda a determinar possíveis causas de qualquer mudança na latência de inicialização em comparação com outros pods.
- Use a lista Latência de inicialização do pod para identificar pods individuais que levaram mais ou menos tempo para serem inicializados. Você pode classificar a lista pela coluna Latência. Quando você identifica pods com a maior latência de inicialização, é possível resolver problemas de degradação de latência correlacionando os eventos de início do pod com outros eventos recentes.

Para descobrir quando um pod foi criado, verifique o valor no campo timestamp
em um evento de criação de pod correspondente. Para conferir o campo timestamp
, execute a consulta a seguir no Explorador de registros:
log_id("cloudaudit.googleapis.com/activity") AND
protoPayload.methodName="io.k8s.core.v1.pods.create" AND
resource.labels.project_id=PROJECT_ID AND
resource.labels.cluster_name=CLUSTER_NAME AND
resource.labels.location=CLUSTER_LOCATION AND
protoPayload.response.metadata.namespace=NAMESPACE AND
protoPayload.response.metadata.name=POD_NAME
Para listar todos os eventos de criação de pods da sua carga de trabalho, use o seguinte filtro
na consulta anterior:
protoPayload.response.metadata.name=~"POD_NAME_PREFIX-[a-f0-9]{7,10}-[a-z0-9]{5}"
Ao comparar as latências de pods individuais, é possível testar o impacto de várias configurações na latência de inicialização do pod e identificar uma configuração ideal com base nos seus requisitos.
Determinar a latência da programação de pods
A latência de programação de pods é o tempo entre a criação e a programação de um pod em um nó. A latência da programação de pods contribui para o tempo de inicialização de ponta a ponta de um pod e é calculada subtraindo os carimbos de data/hora de um evento de programação de pods e uma solicitação de criação de pods.
É possível encontrar um carimbo de data/hora de um evento de programação de pod individual no campo
jsonPayload.eventTime
em um evento de programação de pod correspondente. Para conferir o campo jsonPayload.eventTime
, execute a consulta a seguir no Explorador de registros:
log_id("events")
jsonPayload.reason="Scheduled"
resource.type="k8s_pod"
resource.labels.project_id=PROJECT_ID
resource.labels.location=CLUSTER_LOCATION
resource.labels.cluster_name=CLUSTER_NAME
resource.labels.namespace_name=NAMESPACE
resource.labels.pod_name=POD_NAME
Para listar todos os eventos de programação de pods para sua carga de trabalho, use o seguinte filtro
na consulta anterior:
resource.labels.pod_name=~"POD_NAME_PREFIX-[a-f0-9]{7,10}-[a-z0-9]{5}"
Conferir a latência de extração de imagens
A latência de extração da imagem do contêiner contribui para a latência de inicialização do pod em cenários em que a imagem ainda não está disponível no nó ou precisa ser atualizada. Ao otimizar a latência de extração de imagem, você reduz a latência de inicialização da carga de trabalho durante eventos de escalonamento do cluster.
É possível consultar a tabela Kubelet Image Pull Events para saber quando as imagens do contêiner da carga de trabalho foram extraídas e quanto tempo o processo levou.

A latência de pull de imagem está disponível no campo jsonPayload.message
, que
contém uma mensagem como esta:
"Successfully pulled image "gcr.io/example-project/image-name" in 17.093s (33.051s including waiting). Image size: 206980012 bytes."
Conferir a distribuição de latência das recomendações de escalonamento de HPA
A latência das recomendações de escalonamento do escalonador automático horizontal de pods (HPA) para o destino do HPA é o tempo entre a criação das métricas e a aplicação da recomendação de escalonamento correspondente ao servidor da API. Ao otimizar a latência da recomendação de escalonamento do HPA, você reduz a latência de inicialização da carga de trabalho durante eventos de escalonamento.
O escalonamento do HPA pode ser visualizado nos dois gráficos a seguir:
Gráfico Distribuição de latência de recomendação de escalonamento de HPA: mostra os percentis de latência de recomendação de escalonamento de HPA (percentil 50, 95 e 99) calculados com base nas observações de recomendações de escalonamento de HPA em intervalos de 3 horas. É possível usar este gráfico para os seguintes propósitos:
- Entenda a latência de referência da recomendação de escalonamento do HPA.
- Identifique mudanças na latência das recomendações de escalonamento do HPA ao longo do tempo.
- Correlacione as mudanças na latência da recomendação de escalonamento do HPA com eventos recentes. É possível selecionar os eventos na lista Anotações na parte de cima do painel.

Gráfico Contagem de recomendações de escalonamento de HPA: mostra a contagem de recomendações de escalonamento de HPA observadas durante o intervalo de tempo selecionado. Use o gráfico para as seguintes tarefas:
- Entenda os tamanhos de amostra das recomendações de escalonamento do HPA. As amostras são usadas para calcular os percentis na distribuição de latência das recomendações de escalonamento do HPA para um determinado intervalo de tempo.
- Correlacione as recomendações de escalonamento do HPA com novos eventos de inicialização de pods e com eventos do Escalonador automático horizontal de pods. Você pode selecionar os eventos na lista Anotações na parte de cima do painel.

Conferir problemas de programação de pods
Problemas de programação de pods podem afetar a latência de inicialização de ponta a ponta da sua carga de trabalho. Para reduzir a latência de inicialização de ponta a ponta da sua carga de trabalho, resolva e reduza o número desses problemas.
Confira abaixo os dois gráficos disponíveis para acompanhar esses problemas:
- O gráfico Pods não programáveis/pendentes/com falha mostra as contagens de pods não programáveis, pendentes e com falha ao longo do tempo.
- O gráfico Contêineres com falha de espera/suspensão/prontidão mostra as contagens de contêineres nesses estados ao longo do tempo.
Conferir o painel de latência de inicialização dos nós
Para conferir as métricas de latência de inicialização dos nós, siga estas etapas no console do Google Cloud:
Acesse a página Clusters do Kubernetes.
Para abrir a visualização Detalhes do cluster, clique no nome do cluster que você quer inspecionar.
Clique na guia Observabilidade.
No menu à esquerda, selecione Latência de inicialização.
Conferir a distribuição da latência de inicialização dos nós
A latência de inicialização de um nó se refere à latência total de inicialização, que
mede o tempo desde o CreationTimestamp
do nó até o
status Kubernetes node ready
. A latência de inicialização do nó pode ser visualizada nos
seguintes dois gráficos:
Gráfico Distribuição de latência de inicialização do nó: mostra os percentis de latência de inicialização do nó (percentil 50, 95 e 99) calculados com base nas observações de eventos de inicialização do nó em intervalos de tempo fixos de três horas, por exemplo, 12h-15h e 15h-18h. É possível usar esse gráfico para os seguintes fins:
- Entenda a latência de inicialização do nó de referência.
- Identifique mudanças na latência de inicialização do nó ao longo do tempo.
- Correlacione as mudanças na latência de inicialização do nó com eventos recentes, como atualizações de cluster ou do pool de nós. É possível selecionar os eventos na lista Anotações na parte de cima do painel.

Gráfico Contagem de inicialização de nós: mostra a contagem de nós iniciados durante os intervalos de tempo selecionados. É possível usar o gráfico para os seguintes fins:
- Entenda os tamanhos de amostra de nó usados para calcular os percentis de distribuição de latência de inicialização de nó para um determinado intervalo de tempo.
- Entenda as causas de inicializações de nós, como atualizações do pool de nós ou eventos do escalonador automático de cluster. É possível selecionar os eventos na lista Anotações na parte de cima do painel.

Conferir a latência de inicialização de nós individuais
Ao comparar as latências de nós individuais, é possível testar o impacto de várias configurações de nó na latência de inicialização do nó e identificar uma configuração ideal com base nos seus requisitos. É possível conferir a latência de inicialização de nós individuais no gráfico de linha do tempo Latência de inicialização do nó e na lista associada.
Use o gráfico de linha Latência de inicialização de nó para correlacionar inicializações de nó individuais com eventos recentes, como atualizações de cluster ou de pool de nós. É possível determinar as possíveis causas de mudanças na latência de inicialização em comparação com outros nós. É possível selecionar os eventos na lista Anotações na parte de cima do painel.
Use a lista Latência de inicialização do nó para identificar os nós individuais que levaram mais ou menos tempo para serem iniciados. Você pode classificar a lista pela coluna Latência. Ao identificar nós com a maior latência de inicialização, é possível resolver problemas de degradação de latência correlacionando eventos de inicialização de nós com outros eventos recentes.

Para descobrir quando um nó individual foi criado, verifique o valor do campo protoPayload.metadata.creationTimestamp
em um evento de criação de nó correspondente. Para conferir o campo protoPayload.metadata.creationTimestamp
, execute a
seguinte consulta no Explorador de registros:
log_id("cloudaudit.googleapis.com/activity") AND
protoPayload.methodName="io.k8s.core.v1.nodes.create" AND
resource.labels.project_id=PROJECT_ID AND
resource.labels.cluster_name=CLUSTER_NAME AND
resource.labels.location=CLUSTER_LOCATION AND
protoPayload.response.metadata.name=NODE_NAME
Conferir a latência de inicialização em um pool de nós
Se os pools de nós tiverem configurações diferentes, por exemplo, para executar diferentes cargas de trabalho, talvez seja necessário monitorar a latência de inicialização do nó separadamente por pools de nós. Ao comparar as latências de inicialização de nós nos pools, você pode entender como a configuração do nó afeta a latência de inicialização e, conseqüentemente, otimizar a latência.
Por padrão, o painel Node Startup Latency mostra a distribuição agregada de latência de inicialização e as latências de inicialização de nó individuais em todos os pools de nós em um cluster. Para conferir a latência de inicialização de um pool de nós específico, selecione o nome do pool usando o filtro $node_pool_name_var
, localizado na parte de cima do painel.
A seguir
- Saiba como otimizar o escalonamento automático de pods com base em métricas.
- Saiba mais sobre como reduzir a latência de inicialização a frio no GKE.
- Saiba como reduzir a latência de extração de imagens com o streaming de imagens.
- Saiba mais sobre a economia surpreendente do ajuste do escalonamento automático horizontal de pods.
- Monitore suas cargas de trabalho com o monitoramento automático de aplicativos.