Monitorize as métricas de latência de arranque


Esta página descreve as métricas e os painéis de controlo disponíveis para monitorizar a latência de arranque das cargas de trabalho do Google Kubernetes Engine (GKE) e os nós do cluster subjacentes. Pode usar as métricas para monitorizar, resolver problemas e reduzir a latência de arranque.

Esta página destina-se a administradores e operadores da plataforma que precisam de monitorizar e otimizar a latência de arranque das respetivas cargas de trabalho. Para saber mais sobre as funções comuns a que fazemos referência no conteúdo, consulte o artigo Funções e tarefas comuns de utilizadores do GKE. Google Cloud

Vista geral

A latência de arranque afeta significativamente a forma como a sua aplicação responde aos picos de tráfego, a rapidez com que as respetivas réplicas recuperam de interrupções e a eficiência dos custos de funcionamento dos seus clusters e cargas de trabalho. A monitorização da latência de arranque das suas cargas de trabalho pode ajudar a detetar degradações da latência e acompanhar o impacto das atualizações de cargas de trabalho e infraestrutura na latência de arranque.

A otimização da latência de arranque da carga de trabalho tem as seguintes vantagens:

  • Reduz a latência de resposta do seu serviço aos utilizadores durante picos de tráfego.
  • Reduz a capacidade de publicação excessiva necessária para absorver os picos de procura enquanto são criadas novas réplicas.
  • Reduz o tempo de inatividade dos recursos que já estão implementados e a aguardar que os recursos restantes sejam iniciados durante os cálculos em lote.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.
  • Ative as APIs Cloud Logging e Cloud Monitoring.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

Requisitos

Para ver as métricas e os painéis de controlo da latência de arranque das cargas de trabalho, o cluster do GKE tem de cumprir os seguintes requisitos:

Funções e autorizações necessárias

Para receber as autorizações de que precisa para ativar a geração de registos e aceder e processar registos, peça ao seu administrador que lhe conceda as seguintes funções de IAM:

  • Veja clusters, nós e cargas de trabalho do GKE: Visualizador do Kubernetes Engine (roles/container.viewer) no seu projeto
  • Aceda às métricas de latência de arranque e veja os painéis de controlo: Monitorização de visitantes (roles/monitoring.viewer) no seu projeto
  • Aceda aos registos com informações de latência, como eventos de obtenção de imagens do Kubelet, e veja-os no Logs Explorer e no Log Analytics: Logs Viewer (roles/logging.viewer) no seu projeto

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Métricas de latência de arranque

As métricas de latência de arranque estã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 têm de ter o prefixo kubernetes.io/. Esse prefixo foi omitido das entradas na tabela.

Tipo de métrica (níveis da hierarquia de recursos)
Nome a apresentar
Kind, Type, Unit
Recursos monitorizados
Descrição
Etiquetas
pod/latencies/pod_first_ready(project)
Latência de preparação do primeiro agrupamento
GAUGEDoubles
k8s_pod
A latência de arranque ponto a ponto do pod (do pod Created para Ready), incluindo a obtenção de imagens. Amostrada a cada 60 segundos.
node/latencies/startup(projeto)
Latência de arranque do nó
GAUGEINT64s
k8s_node
A latência de arranque total do nó, desde CreationTimestamp da instância do GCE até Kubernetes node ready pela primeira vez. Amostrada 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: indica se o pedido de criação de nós foi recebido quando o KCP (plano de controlo do kube) estava disponível.
autoscaler/latencies/per_hpa_recommendation_scale_latency_seconds(project)
Latência de escala por recomendação de HPA
GAUGEDOUBLEs
k8s_scale
Latência da recomendação de escalonamento do Horizontal Pod Autoscaler (HPA) (tempo entre a criação das métricas e a aplicação da recomendação de escalonamento correspondente ao apiserver) para o destino do HPA. Amostrada a cada 60 segundos. Após a amostragem, os dados não ficam visíveis durante um máximo de 20 segundos.

metric_type: o tipo de origem da métrica. Deve ser um dos seguintes valores: "ContainerResource", "External", "Object", "Pods" ou "Resource".

Veja o painel de controlo de latência de arranque para cargas de trabalho

O painel de controlo Latência de arranque para cargas de trabalho só está disponível para implementações. Para ver as métricas de latência de arranque das implementações, siga os passos seguintes na Google Cloud consola:

  1. Aceda à página Cargas de trabalho.

    Aceda a Cargas de trabalho

  2. Para abrir a vista Detalhes da implementação, clique no nome da carga de trabalho que quer inspecionar.

  3. Clique no separador Observabilidade.

  4. Selecione Latência de arranque no menu do lado esquerdo.

Veja a distribuição da latência de arranque dos pods

A latência de arranque dos pods refere-se à latência de arranque total, incluindo a obtenção de imagens, que mede o tempo desde o estado Created do pod até ao estado Ready. Pode avaliar a latência de arranque dos pods através dos dois gráficos seguintes:

  • Gráfico Distribuição da latência de arranque do pod: este gráfico mostra os percentis de latência de arranque dos pods (50.º percentil, 95.º percentil e 99.º percentil) que são calculados com base nas observações de eventos de arranque do pod em intervalos de tempo fixos de 3 horas, por exemplo, das 00:00 às 03:00 e das 03:00 às 06:00. Pode usar este gráfico para os seguintes fins:

    • Compreenda a latência de arranque do pod de base.
    • Identificar alterações na latência de arranque do pod ao longo do tempo.
    • Correlacione as alterações na latência de arranque dos pods com eventos recentes, como implementações de cargas de trabalho ou eventos do redimensionador automático de clusters. Pode selecionar os eventos na lista Anotações na parte superior do painel de controlo.
Gráfico de distribuição da latência de arranque do agrupamento
Figura: gráfico de distribuição da latência de arranque do agrupamento
  • Gráfico Contagem de inicializações de pods: este gráfico mostra a contagem de pods que foram iniciados durante os intervalos de tempo selecionados. Pode usar este gráfico para os seguintes fins:

    • Compreenda os tamanhos de amostra de agrupamentos usados para calcular os percentis da distribuição da latência de arranque de agrupamentos para um determinado intervalo de tempo.
    • Compreenda as causas dos inícios de pods, como implementações de cargas de trabalho ou eventos do escalador automático de pods horizontal. Pode selecionar os eventos na lista Anotações na parte superior do painel de controlo.
Gráfico de contagem de inicializações de agrupamentos
Figura: gráfico de contagem de inicializações de agrupamentos

Veja a latência de arranque de pods individuais

Pode ver a latência de arranque de Pods individuais no gráfico de linha cronológica Pod First Ready Latency e na lista associada.

  • Use o gráfico de cronologia Pod First Ready Latency para correlacionar inícios de pods individuais com eventos recentes, como eventos de escala automática horizontal de pods ou de redimensionador automático de cluster. Pode selecionar estes eventos na lista Anotações na parte superior do painel de controlo. Este gráfico ajuda a determinar as potenciais causas de quaisquer alterações na latência de arranque em comparação com outros pods.
  • Use a lista Latência do primeiro agrupamento pronto para identificar agrupamentos individuais que demoraram mais ou menos tempo a iniciar. Pode ordenar a lista pela coluna Latência. Quando identifica agrupamentos com a latência de arranque mais elevada, pode resolver problemas de degradação da latência correlacionando os eventos de início do agrupamento com outros eventos recentes.
Gráfico de latência de primeiro agrupamento pronto
Figura: gráfico de latência do primeiro agrupamento pronto

Pode saber quando um grupo de anúncios individual foi criado consultando o valor no campo timestamp num evento de criação de grupo de anúncios correspondente. Para ver o campo timestamp, execute a seguinte consulta no Explorador de registos:

   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 para a 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}"

Quando compara as latências de Pods individuais, pode testar o impacto de várias configurações na latência de arranque do Pod e identificar uma configuração ideal com base nos seus requisitos.

Determine a latência de agendamento de pods

A latência de agendamento de agrupamentos é o tempo decorrido entre a criação de um agrupamento e o agendamento do agrupamento num nó. A latência de agendamento de agrupamentos contribui para o tempo de início completo de um agrupamento e é calculada subtraindo as datas/horas de um evento de agendamento de agrupamentos e um pedido de criação de agrupamentos.

Pode encontrar uma data/hora de um evento de agendamento de reuniões individuais no campo jsonPayload.eventTime de um evento de agendamento de reuniões correspondente. Para ver o campo jsonPayload.eventTime, execute a seguinte consulta no Explorador de registos:

  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 apresentar uma lista de todos os eventos de agendamento de pods para a 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}"

Veja a latência de obtenção de imagens

A latência de obtenção da imagem do contentor contribui para a latência de arranque do pod em cenários em que a imagem ainda não está disponível no nó ou tem de ser atualizada. Quando otimiza a latência de obtenção de imagens, reduz a latência de arranque da carga de trabalho durante eventos de expansão do cluster.

Pode ver a tabela Kubelet Image Pull Events para ver quando as imagens de contentores da carga de trabalho foram extraídas e quanto tempo demorou o processo.

Tabela de eventos de obtenção de imagens do Kubelet
Figura: tabela de eventos de obtenção de imagens do Kubelet

A latência de obtenção de imagens está disponível no campo jsonPayload.message, que contém uma mensagem semelhante à seguinte:

  "Successfully pulled image "gcr.io/example-project/image-name" in 17.093s (33.051s including waiting). Image size: 206980012 bytes."

Veja a distribuição da latência das recomendações de escalabilidade do HPA

A latência das recomendações de escalabilidade do Horizontal Pod Autoscaler (HPA) para o destino do HPA é o tempo decorrido entre a criação das métricas e a aplicação da recomendação de escalabilidade correspondente ao servidor da API. Quando otimiza a latência da recomendação de escalabilidade do HPA, reduz a latência de arranque da carga de trabalho durante eventos de expansão.

O escalonamento do HPA pode ser visto nos dois gráficos seguintes:

  • Gráfico Distribuição da latência da recomendação de escalabilidade do HPA: este gráfico mostra os percentis da latência da recomendação de escalabilidade do HPA (percentil 50, percentil 95 e percentil 99) que são calculados com base nas observações das recomendações de escalabilidade do HPA em intervalos de tempo de 3 horas anteriores. Pode usar este gráfico para os seguintes fins:

    • Compreenda a latência da recomendação de escalabilidade do HPA de base.
    • Identificar alterações na latência da recomendação de escalamento de HPA ao longo do tempo.
    • Correlacione as alterações na latência da recomendação de escalabilidade do HPA com eventos recentes. Pode selecionar os eventos na lista Anotações na parte superior do painel de controlo.
Gráfico de distribuição da latência da recomendação de escalamento de HPA
Figura: gráfico de distribuição da latência da recomendação de escalamento de HPAs
  • Gráfico HPA Scaling Recommendation Count: este gráfico mostra a quantidade de recomendações de escalabilidade do HPA que foram observadas durante o intervalo de tempo selecionado. Use o gráfico para as seguintes tarefas:

    • Compreenda os tamanhos das amostras de recomendações de escalabilidade do HPA. As amostras são usadas para calcular os percentis na distribuição da latência para recomendações de escalabilidade do HPA para um determinado intervalo de tempo.
    • Correlacione as recomendações de escalonamento do HPA com novos eventos de arranque de pods e com eventos do escalonador automático horizontal de pods. Pode selecionar os eventos na lista Anotações na parte superior do painel de controlo.
Gráfico de contagem de recomendações de escalamento de HPA
Figura: gráfico de contagem de recomendações de escalabilidade de HPA

Veja problemas de agendamento para pods

Os problemas de agendamento de pods podem afetar a latência de arranque ponto a ponto da sua carga de trabalho. Para reduzir a latência de arranque ponto a ponto da sua carga de trabalho, resolva e reduza o número destes problemas.

Seguem-se os dois gráficos disponíveis para monitorizar estes problemas:

  • O gráfico Pods não agendáveis/pendentes/com falhas mostra as contagens de pods não agendáveis, pendentes e com falhas ao longo do tempo.
  • O gráfico Backoff/Waiting/Readiness Failed Containers mostra as contagens de contentores nestes estados ao longo do tempo.

Veja o painel de controlo de latência de arranque para nós

Para ver as métricas de latência de arranque dos nós, siga estes passos na Google Cloud consola:

  1. Aceda à página Clusters do Kubernetes.

    Aceda a Clusters do Kubernetes

  2. Para abrir a vista Detalhes do cluster, clique no nome do cluster que quer inspecionar.

  3. Clique no separador Observabilidade.

  4. No menu do lado esquerdo, selecione Latência de arranque.

Veja a distribuição da latência de arranque dos nós

A latência de arranque de um nó refere-se à latência de arranque total, que mede o tempo desde o CreationTimestamp do nó até ao estado Kubernetes node ready. Pode ver a latência de arranque do nó nos dois gráficos seguintes:

  • Gráfico Distribuição da latência de arranque do nó: este gráfico mostra os percentis da latência de arranque do nó (percentil 50, percentil 95 e percentil 99) que são calculados com base nas observações de eventos de arranque do nó em intervalos de tempo fixos de 3 horas, por exemplo, das 00:00 às 03:00 e das 03:00 às 06:00. Pode usar este gráfico para os seguintes fins:

    • Compreenda a latência de arranque do nó de base.
    • Identifique alterações na latência de arranque do nó ao longo do tempo.
    • Correlacione as alterações na latência de arranque dos nós com eventos recentes, como atualizações de clusters ou atualizações de node pools. Pode selecionar os eventos na lista Anotações na parte superior do painel de controlo.
Gráfico de distribuição da latência de arranque do nó
Figura: Gráfico de distribuição da latência de arranque do nó
  • Gráfico Node Startup Count: este gráfico mostra a quantidade de nós iniciados durante os intervalos de tempo selecionados. Pode usar o gráfico para os seguintes fins:

    • Compreenda os tamanhos de amostra dos nós, usados para calcular os percentis de distribuição da latência de arranque dos nós para um determinado intervalo de tempo.
    • Compreenda as causas dos inícios de nós, como atualizações de node pools ou eventos do Autoscaler de clusters. Pode selecionar os eventos na lista Anotações na parte superior do painel de controlo.
Gráfico de contagem de arranque de nós
Figura: gráfico de contagem de arranque de nós

Veja a latência de arranque de nós individuais

Quando compara as latências de nós individuais, pode testar o impacto de várias configurações de nós na latência de arranque dos nós e identificar uma configuração ideal com base nos seus requisitos. Pode ver a latência de arranque dos nós individuais no gráfico de linha cronológica Latência de arranque dos nós e na lista associada.

  • Use o gráfico da cronologia Latência de arranque do nó para correlacionar os arranques de nós individuais com eventos recentes, como atualizações de clusters ou atualizações de node pools. Pode determinar as potenciais causas das alterações na latência de arranque em comparação com outros nós. Pode selecionar os eventos na lista Anotações na parte superior do painel de controlo.

  • Use a lista Latência de início do nó para identificar nós individuais que demoraram mais ou menos tempo a iniciar. Pode ordenar a lista pela coluna Latência. Quando identifica nós com a latência de arranque mais elevada, pode resolver problemas de degradação da latência correlacionando eventos de início de nós com outros eventos recentes.

Gráfico de latência de arranque do nó
Figura: gráfico de latência de arranque do nó

Pode saber quando um nó individual foi criado consultando o valor do campo protoPayload.metadata.creationTimestamp num evento de criação de nó correspondente. Para ver o campo protoPayload.metadata.creationTimestamp, execute a seguinte consulta no Explorador de registos:

   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

Veja a latência de arranque num conjunto de nós

Se os seus agrupamentos de nós tiverem configurações diferentes, por exemplo, para executar diferentes cargas de trabalho, pode ter de monitorizar a latência de arranque dos nós separadamente por agrupamentos de nós. Quando compara as latências de arranque dos nós nos seus conjuntos de nós, pode obter estatísticas sobre o impacto da configuração dos nós na latência de arranque dos nós e, consequentemente, otimizar a latência.

Por predefinição, o painel de controlo Latência de arranque do nó mostra a distribuição agregada da latência de arranque e as latências de arranque do nó individuais em todos os conjuntos de nós num cluster. Para ver a latência de arranque dos nós de um conjunto de nós específico, selecione o nome do conjunto de nós através do filtro $node_pool_name_var localizado na parte superior do painel de controlo.

O que se segue?