Questa pagina descrive le metriche e le dashboard disponibili per monitorare la latenza di avvio dei carichi di lavoro 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 carichi di lavoro. Per saperne di più sui ruoli comuni a cui facciamo riferimento nei Google Cloud 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 carichi di lavoro. Il monitoraggio della latenza di avvio dei carichi di lavoro può aiutarti a rilevare i peggioramenti della latenza e a monitorare l'impatto degli aggiornamenti dei carichi di lavoro e dell'infrastruttura sulla latenza di avvio.
L'ottimizzazione della latenza di avvio dei carichi di lavoro 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à di cui è stato eseguito il deployment e che sono 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 updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi 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.
Requisiti
Per visualizzare le metriche e le dashboard relative alla latenza di avvio dei carichi di lavoro, il cluster GKE deve soddisfare i seguenti requisiti:
- Devi avere GKE versione 1.31.1-gke.1678000 o successive.
- Devi configurare la raccolta delle metriche di sistema.
- Devi configurare la raccolta dei log di sistema.
- Abilita le metriche di stato di kube con
il componente
PODsui cluster per visualizzare le metriche di pod e container.
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 GKE, nodi e carichi di lavoro:
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 Observability Analytics:
Visualizzatore log (
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 dal prefisso kubernetes.io/. Questo prefisso è stato omesso dalle voci della tabella.
| Tipo di metrica (livelli della gerarchia delle risorse) Nome visualizzato |
|
|---|---|
|
Tipo, Unità
Risorse monitorate |
Descrizione Etichette |
pod/latencies/pod_first_ready
(progetto)
Latenza prima disponibilità pod |
|
GAUGE, Double, s
k8s_pod |
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
(progetto)
Latenza di avvio dei nodi |
|
GAUGE, INT64, s
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
(progetto)
Latenza di scalabilità per suggerimento HPA |
|
GAUGE, DOUBLE, s
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 il target 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 dei seguenti valori: "ContainerResource", "External", "Object", "Pods" o "Resource".
|
Visualizza la dashboard Latenza di avvio per i carichi di lavoro
La dashboard Latenza di avvio per i carichi di lavoro è disponibile solo per i deployment. Per visualizzare le metriche della latenza di avvio per i deployment, segui questi passaggi nella console: Google Cloud
Vai alla pagina Carichi di lavoro.
Per aprire la visualizzazione Dettagli del deployment, fai clic sul nome del carico di lavoro che vuoi esaminare.
Fai clic sulla scheda Osservabilità.
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 della latenza di avvio dei pod: questo grafico mostra i percentili della 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.
- Stabilire una correlazione tra le modifiche della latenza di avvio dei pod e gli eventi recenti, come i deployment dei carichi di lavoro o gli eventi di scalabilità automatica dei cluster. Puoi selezionare gli eventi nell'elenco Annotazioni nella parte superiore della dashboard.
Grafico Numero di avvii dei pod: questo grafico mostra il numero di 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 carichi di lavoro o gli eventi di Horizontal Pod Autoscaler. Puoi selezionare gli eventi nell'elenco Annotazioni nella parte superiore della dashboard.
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 stabilire una correlazione tra gli avvii dei singoli pod e gli 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 stabilendo una correlazione tra gli eventi di avvio dei pod e altri eventi recenti.
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 carico di lavoro, 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 pianificazione del pod 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 nel 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 carico di lavoro, 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 carico di lavoro durante gli eventi di scale out del cluster.
Puoi visualizzare la tabella Eventi di pull delle immagini kubelet per vedere quando sono state estratte le immagini container del carico di lavoro e quanto tempo ha richiesto il processo.
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 il target HPA è il tempo trascorso tra la creazione delle metriche e l'applicazione del suggerimento di scalabilità corrispondente al server API. Quando ottimizzi la latenza dei suggerimenti di scalabilità HPA, riduci la latenza di avvio del carico di lavoro durante gli eventi di scale out.
La scalabilità HPA può essere visualizzata nei seguenti due grafici:
Grafico Distribuzione della latenza dei suggerimenti sulla scalabilità HPA: questo grafico mostra i percentili della 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.
- Stabilire una correlazione tra le modifiche della latenza dei suggerimenti di scalabilità HPA e gli eventi recenti. Puoi selezionare gli eventi nell'elenco Annotazioni nella parte superiore della dashboard.
Grafico Numero di suggerimenti sulla scalabilità HPA: questo grafico mostra il numero di 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.
- Stabilire una correlazione tra i suggerimenti di scalabilità HPA e 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.
Visualizza i problemi di pianificazione dei pod
I problemi di pianificazione dei pod potrebbero influire sulla latenza di avvio end-to-end del carico di lavoro. Per ridurre la latenza di avvio end-to-end del carico di lavoro, 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 numero di pod non pianificabili, in attesa e non riusciti nel tempo.
- Il grafico Container in backoff/in attesa/con preparazione non riuscita mostra il numero di 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 Google Cloud console:
Vai alla pagina Cluster Kubernetes.
Per aprire la visualizzazione Dettagli del cluster, fai clic sul nome del cluster che vuoi esaminare.
Fai clic sulla scheda Osservabilità.
Nel 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 della 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.
- Stabilire una correlazione tra le modifiche della latenza di avvio dei nodi e gli 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 Numero di avvii dei nodi: questo grafico mostra il numero di 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.
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 stabilire una correlazione tra gli avvii dei singoli nodi e gli 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 stabilendo una correlazione tra gli eventi di avvio dei nodi e altri eventi recenti.
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 carichi di lavoro 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
- Confronta le strategie per ridurre la latenza di avvio.
- Scopri come accelerare l'avvio delle applicazioni utilizzando l'aumento dell'avvio della CPU.
- Scopri di più su modi per ridurre la latenza di avvio a freddo su GKE.
- Scopri come ridurre la latenza di pull delle immagini con il flusso dell'immagine.
- Scopri l'economia sorprendente della regolazione della scalabilità automatica orizzontale dei pod.
- Monitora i tuoi carichi di lavoro con il monitoraggio automatico delle applicazioni.