Monitorare le metriche di latenza di avvio

Questa pagina descrive le metriche e le dashboard disponibili per il monitoraggio della latenza di avvio dei workload di Google Kubernetes Engine (GKE) e dei nodi del cluster sottostanti. Puoi utilizzare le metriche per monitorare, risolvere i problemi e ridurre la latenza di avvio.

Questa pagina è rivolta agli amministratori e agli operatori della piattaforma che devono monitorare e ottimizzare la latenza di avvio dei loro workload. Per saperne di più sui ruoli comuni a cui facciamo riferimento nei Cloud de Confiance by S3NS contenuti, consulta Ruoli e attività comuni degli utenti GKE.

Panoramica

La latenza di avvio influisce in modo significativo sulla velocità di risposta dell'applicazione ai picchi di traffico, sulla velocità di ripristino delle repliche in caso di interruzioni e sull'efficienza dei costi operativi dei cluster e dei workload. Il monitoraggio della latenza di avvio dei workload può aiutarti a rilevare i peggioramenti della latenza e a monitorare l'impatto degli aggiornamenti dei workload e dell'infrastruttura sulla latenza di avvio.

L'ottimizzazione della latenza di avvio dei workload offre i seguenti vantaggi:

  • Riduce la latenza di risposta del servizio agli utenti durante i picchi di traffico.
  • Riduce la capacità di pubblicazione in eccesso necessaria per assorbire i picchi di domanda durante la creazione di nuove repliche.
  • Riduce il tempo di inattività delle risorse già sottoposte a deployment e in attesa dell'avvio delle risorse rimanenti durante i calcoli batch.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo il gcloud components update comando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi descritti in questo documento.
  • Abilita le API Cloud Logging e Cloud Monitoring.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    Abilita le API

Requisiti

Per visualizzare le metriche e le dashboard relative alla latenza di avvio dei workload, il cluster GKE deve soddisfare i seguenti requisiti:

Ruoli e autorizzazioni richiesti

Per ottenere le autorizzazioni necessarie per abilitare la generazione dei log e per accedere ed elaborare i log, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Visualizza cluster, nodi e workload GKE: Kubernetes Engine Viewer (roles/container.viewer) sul tuo progetto
  • Accedi alle metriche della latenza di avvio e visualizza le dashboard: Monitoring Viewer (roles/monitoring.viewer) sul tuo progetto
  • Accedi ai log con informazioni sulla latenza, come gli eventi di pull delle immagini kubelet, e visualizzali in Esplora log e Analisi di osservabilità: Logs Viewer (roles/logging.viewer) sul tuo progetto

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Metriche della latenza di avvio

Le metriche della latenza di avvio sono incluse nelle metriche di sistema di GKE e vengono esportate in Cloud Monitoring nello stesso progetto del cluster GKE.

I nomi delle metriche di Cloud Monitoring in questa tabella devono essere preceduti da kubernetes.io/. Questo prefisso è stato omesso dalle voci della tabella.

Metric type (Resource hierarchy levels)
Display name
Kind, Type, Unit  
Monitored resources
Description
Labels
pod/latencies/pod_first_ready(project)
Latenza prima disponibilità pod
GAUGEDoubles
k8s_pod
La latenza di avvio end-to-end del pod (da Pod Created a Ready), inclusi i pull delle immagini. Campionamento eseguito ogni 60 secondi.
node/latencies/startup(project)
Latenza di avvio dei nodi
GAUGEINT64s
k8s_node
La latenza di avvio totale del nodo, da CreationTimestamp dell'istanza GCE a Kubernetes node ready per la prima volta. Campionamento eseguito ogni 60 secondi.

accelerator_family: una classificazione dei nodi in base agli acceleratori hardware: gpu, tpu, cpu.
kube_control_plane_available: indica se la richiesta di creazione del nodo è stata ricevuta quando KCP (kube control plane) era disponibile.
autoscaler/latencies/per_hpa_recommendation_scale_latency_seconds(project)
Latenza di scalabilità per suggerimento HPA
GAUGEDOUBLEs
k8s_scale
Latenza dei suggerimenti di scalabilità di Horizontal Pod Autoscaler (HPA) (tempo tra la creazione delle metriche e l'applicazione del suggerimento di scalabilità corrispondente all'apiserver) per la destinazione HPA. Campionamento eseguito ogni 60 secondi. Dopo il campionamento, i dati non sono visibili per un massimo di 20 secondi.

metric_type: il tipo di origine della metrica. Deve essere uno tra "ContainerResource", "External", "Object", "Pods" o "Resource".

Visualizza la dashboard Latenza di avvio per i workload

La dashboard Latenza di avvio per i workload è disponibile solo per i deployment. Per visualizzare le metriche della latenza di avvio per i deployment, segui questi passaggi nella console: Cloud de Confiance

  1. Vai alla pagina Workload.

    Vai a Carichi di lavoro

  2. Per aprire la visualizzazione Dettagli deployment, fai clic sul nome del workload che vuoi esaminare.

  3. Fai clic sulla scheda Osservabilità.

  4. Seleziona Latenza di avvio dal menu a sinistra.

Visualizza la distribuzione della latenza di avvio dei pod

La latenza di avvio dei pod si riferisce alla latenza di avvio totale, inclusi i pull delle immagini, che misura il tempo dallo stato Created del pod allo stato Ready. Puoi valutare la latenza di avvio dei pod utilizzando i seguenti due grafici:

  • Grafico Distribuzione latenza avvio pod: questo grafico mostra i percentili di latenza di avvio dei pod (cinquantesimo percentile, novantacinquesimo percentile e novantanovesimo percentile) calcolati in base alle osservazioni degli eventi di avvio dei pod in intervalli di tempo fissi di 3 ore, ad esempio dalle 00:00 alle 03:00 e dalle 03:00 alle 06:00. Puoi utilizzare questo grafico per i seguenti scopi:

    • Comprendere la latenza di avvio dei pod di riferimento.
    • Identificare le modifiche della latenza di avvio dei pod nel tempo.
    • Correlare le modifiche della latenza di avvio dei pod con eventi recenti, come i deployment dei workload o gli eventi di scalabilità automatica dei cluster. Puoi selezionare gli eventi nell'elenco Annotazioni nella parte superiore della dashboard.
Grafico Distribuzione latenza avvio pod
Figura: grafico Distribuzione latenza avvio pod
  • Grafico Numero avvio pod: questo grafico mostra il conteggio dei pod avviati durante gli intervalli di tempo selezionati. Puoi utilizzare questo grafico per i seguenti scopi:

    • Comprendere le dimensioni dei campioni di pod utilizzati per calcolare i percentili della distribuzione della latenza di avvio dei pod per un determinato intervallo di tempo.
    • Comprendere le cause degli avvii dei pod, come i deployment dei workload o gli eventi di scalabilità automatica orizzontale dei pod. Puoi selezionare gli eventi nell'elenco Annotazioni nella parte superiore della dashboard.
Grafico Numero avvio pod
Figura: grafico Numero avvio pod

Visualizza la latenza di avvio dei singoli pod

Puoi visualizzare la latenza di avvio dei singoli pod nel grafico a cronologia Latenza prima disponibilità pod e nell'elenco associato.

  • Utilizza il grafico a cronologia Latenza prima disponibilità pod per correlare gli avvii dei singoli pod con eventi recenti, come gli eventi di Horizontal Pod Autoscaler o di scalabilità automatica dei cluster. Puoi selezionare questi eventi nell'elenco Annotazioni nella parte superiore della dashboard. Questo grafico ti aiuta a determinare le potenziali cause di eventuali modifiche della latenza di avvio rispetto ad altri pod.
  • Utilizza l'elenco Latenza prima disponibilità pod per identificare i singoli pod il cui avvio ha richiesto più o meno tempo. Puoi ordinare l'elenco in base alla colonna Latenza. Quando identifichi i pod con la latenza di avvio più elevata, puoi risolvere i problemi di peggioramento della latenza correlando gli eventi di avvio dei pod con altri eventi recenti.
Grafico della latenza prima disponibilità pod
Figura: grafico Latenza prima disponibilità pod

Puoi scoprire quando è stato creato un singolo pod esaminando il valore nel campo timestamp in un evento di creazione del pod corrispondente. Per visualizzare il campo timestamp, esegui la seguente query in Esplora log:

   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

Per elencare tutti gli eventi di creazione dei pod per il tuo workload, utilizza il seguente filtro nella query precedente: protoPayload.response.metadata.name=~"POD_NAME_PREFIX-[a-f0-9]{7,10}-[a-z0-9]{5}"

Quando confronti le latenze dei singoli pod, puoi testare l'impatto di varie configurazioni sulla latenza di avvio dei pod e identificare una configurazione ottimale in base ai tuoi requisiti.

Determina la latenza di pianificazione dei pod

La latenza di pianificazione dei pod è il tempo trascorso tra la creazione di un pod e la sua pianificazione su un nodo. La latenza di pianificazione dei pod contribuisce al tempo di avvio end-to-end di un pod e viene calcolata sottraendo i timestamp di un evento di pianificazione dei pod e di una richiesta di creazione dei pod.

Puoi trovare un timestamp di un singolo evento di pianificazione dei pod dal campo jsonPayload.eventTime in un evento di pianificazione dei pod corrispondente. Per visualizzare il jsonPayload.eventTime campo, esegui la seguente query in Esplora log:

  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

Per elencare tutti gli eventi di pianificazione dei pod per il tuo workload, utilizza il seguente filtro nella query precedente: resource.labels.pod_name=~"POD_NAME_PREFIX-[a-f0-9]{7,10}-[a-z0-9]{5}"

Visualizza la latenza di pull delle immagini

La latenza di pull delle immagini container contribuisce alla latenza di avvio dei pod negli scenari in cui l'immagine non è ancora disponibile sul nodo o deve essere aggiornata. Quando ottimizzi la latenza di pull delle immagini, riduci la latenza di avvio del workload durante gli eventi di scalabilità orizzontale del cluster.

Puoi visualizzare la tabella Eventi di pull immagini kubelet per vedere quando sono state estratte le immagini container del workload e quanto tempo ha richiesto il processo.

Tabella Eventi di pull immagini kubelet
Figura: tabella Eventi di pull immagini kubelet

La latenza di pull delle immagini è disponibile nel campo jsonPayload.message, che contiene un messaggio simile al seguente:

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

Visualizza la distribuzione della latenza dei suggerimenti di scalabilità HPA

La latenza dei suggerimenti di scalabilità di Horizontal Pod Autoscaler (HPA) per la destinazione HPA è il tempo trascorso tra la creazione delle metriche e l'applicazione del suggerimento di scalabilità corrispondente all'API server. Quando ottimizzi la latenza dei suggerimenti di scalabilità HPA, riduci la latenza di avvio del workload durante gli eventi di scalabilità orizzontale.

La scalabilità HPA può essere visualizzata nei seguenti due grafici:

  • Grafico Distribuzione della latenza dei suggerimenti sulla scalabilità HPA: questo grafico mostra i percentili di latenza dei suggerimenti di scalabilità HPA (cinquantesimo percentile, novantacinquesimo percentile e novantanovesimo percentile) calcolati in base alle osservazioni dei suggerimenti di scalabilità HPA in intervalli di tempo di 3 ore. Puoi utilizzare questo grafico per i seguenti scopi:

    • Comprendere la latenza dei suggerimenti di scalabilità HPA di riferimento.
    • Identificare le modifiche della latenza dei suggerimenti di scalabilità HPA nel tempo.
    • Correlare le modifiche della latenza dei suggerimenti di scalabilità HPA con eventi recenti. Puoi selezionare gli eventi nell'elenco Annotazioni nella parte superiore della dashboard.
Grafico Distribuzione della latenza dei suggerimenti sulla scalabilità HPA
Figura: grafico Distribuzione della latenza dei suggerimenti sulla scalabilità HPA
  • Grafico Numero di suggerimenti sulla scalabilità HPA: questo grafico mostra il conteggio dei suggerimenti di scalabilità HPA osservati durante l'intervallo di tempo selezionato. Utilizza il grafico per le seguenti attività:

    • Comprendere le dimensioni dei campioni dei suggerimenti di scalabilità HPA. I campioni vengono utilizzati per calcolare i percentili nella distribuzione della latenza per i suggerimenti di scalabilità HPA per un determinato intervallo di tempo.
    • Correlare i suggerimenti di scalabilità HPA con i nuovi eventi di avvio dei pod e con gli eventi di Horizontal Pod Autoscaler. Puoi selezionare gli eventi nell'elenco Annotazioni nella parte superiore della dashboard.
Grafico Numero di suggerimenti sulla scalabilità HPA
Figura: grafico Numero di suggerimenti sulla scalabilità HPA

Visualizza i problemi di pianificazione dei pod

I problemi di pianificazione dei pod potrebbero influire sulla latenza di avvio end-to-end del workload. Per ridurre la latenza di avvio end-to-end del workload, risolvi i problemi e riduci il loro numero.

Di seguito sono riportati i due grafici disponibili per monitorare questi problemi:

  • Il grafico Pod non pianificabili/in attesa/non riusciti mostra il conteggio dei pod non pianificabili, in attesa e non riusciti nel tempo.
  • Il grafico Container con backoff/in attesa/con preparazione non riuscita mostra il conteggio dei container in questi stati nel tempo.

Visualizza la dashboard della latenza di avvio per i nodi

Per visualizzare le metriche della latenza di avvio per i nodi, segui questi passaggi nella Cloud de Confiance console:

  1. Vai alla pagina Cluster Kubernetes.

    Vai ai cluster Kubernetes

  2. Per aprire la visualizzazione Dettagli cluster, fai clic sul nome del cluster che vuoi esaminare.

  3. Fai clic sulla scheda Osservabilità.

  4. Dal menu a sinistra, seleziona Latenza di avvio.

Visualizza la distribuzione della latenza di avvio dei nodi

La latenza di avvio di un nodo si riferisce alla latenza di avvio totale, che misura il tempo da CreationTimestamp del nodo allo stato Kubernetes node ready. La latenza di avvio dei nodi può essere visualizzata nei seguenti due grafici:

  • Grafico Distribuzione della latenza di avvio dei nodi: questo grafico mostra i percentili di latenza di avvio dei nodi (cinquantesimo percentile, novantacinquesimo percentile e novantanovesimo percentile) calcolati in base alle osservazioni degli eventi di avvio dei nodi in intervalli di tempo fissi di 3 ore, ad esempio dalle 00:00 alle 03:00 e dalle 03:00 alle 06:00. Puoi utilizzare questo grafico per i seguenti scopi:

    • Comprendere la latenza di avvio dei nodi di riferimento.
    • Identificare le modifiche della latenza di avvio dei nodi nel tempo.
    • Correlare le modifiche della latenza di avvio dei nodi con eventi recenti, come gli aggiornamenti dei cluster o gli aggiornamenti dei pool di nodi. Puoi selezionare gli eventi nell'elenco Annotazioni nella parte superiore della dashboard.
Grafico Distribuzione della latenza di avvio dei nodi
Figura: grafico Distribuzione della latenza di avvio dei nodi
  • Grafico Numero avvio nodi: questo grafico mostra il conteggio dei nodi avviati durante gli intervalli di tempo selezionati. Puoi utilizzare il grafico per i seguenti scopi:

    • Comprendere le dimensioni dei campioni di nodi utilizzati per calcolare i percentili della distribuzione della latenza di avvio dei nodi per un determinato intervallo di tempo.
    • Comprendere le cause degli avvii dei nodi, come gli aggiornamenti dei pool di nodi o gli eventi di scalabilità automatica dei cluster. Puoi selezionare gli eventi nell'elenco Annotazioni nella parte superiore della dashboard.
Grafico Numero avvio pod
Figura: grafico Numero avvio nodi

Visualizza la latenza di avvio dei singoli nodi

Quando confronti le latenze dei singoli nodi, puoi testare l'impatto di varie configurazioni dei nodi sulla latenza di avvio dei nodi e identificare una configurazione ottimale in base ai tuoi requisiti. Puoi visualizzare la latenza di avvio dei singoli nodi nel grafico a cronologia Latenza di avvio dei nodi e nell'elenco associato.

  • Utilizza il grafico a cronologia Latenza di avvio dei nodi per correlare gli avvii dei singoli nodi con eventi recenti, come gli aggiornamenti dei cluster o gli aggiornamenti dei pool di nodi. Puoi determinare le potenziali cause delle modifiche della latenza di avvio rispetto ad altri nodi. Puoi selezionare gli eventi nell'elenco Annotazioni nella parte superiore della dashboard.

  • Utilizza l'elenco Latenza di avvio dei nodi per identificare i singoli nodi il cui avvio ha richiesto più o meno tempo. Puoi ordinare l'elenco in base alla colonna Latenza. Quando identifichi i nodi con la latenza di avvio più elevata, puoi risolvere i problemi di peggioramento della latenza correlando gli eventi di avvio dei nodi con altri eventi recenti.

Grafico Latenza di avvio dei nodi
Figura: grafico Latenza di avvio dei nodi

Puoi scoprire quando è stato creato un singolo nodo esaminando il valore del campo protoPayload.metadata.creationTimestamp in un evento di creazione del nodo corrispondente. Per visualizzare il campo protoPayload.metadata.creationTimestamp, esegui la seguente query in Esplora log:

   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

Visualizza la latenza di avvio in un pool di nodi

Se i pool di nodi hanno configurazioni diverse, ad esempio per eseguire workload diversi, potresti dover monitorare la latenza di avvio dei nodi separatamente per pool di nodi. Quando confronti le latenze di avvio dei nodi nei pool di nodi, puoi ottenere informazioni su come la configurazione dei nodi influisce sulla latenza di avvio dei nodi e, di conseguenza, ottimizzare la latenza.

Per impostazione predefinita, la dashboard Latenza di avvio dei nodi mostra la distribuzione della latenza di avvio aggregata e le latenze di avvio dei singoli nodi in tutti i pool di nodi di un cluster. Per visualizzare la latenza di avvio dei nodi per un pool di nodi specifico, seleziona il nome del pool di nodi utilizzando il filtro $node_pool_name_var nella parte superiore della dashboard.

Passaggi successivi