Quando un pod non funziona o un servizio non funziona come previsto in Google Kubernetes Engine (GKE), è fondamentale comprendere la sequenza di eventi che hanno portato al problema. L'ispezione dello stato attuale non è sempre sufficiente per trovare la causa principale, il che rende i dati dei log storici preziosi.
Utilizza questa pagina per scoprire come utilizzare Cloud Logging per esaminare gli errori passati (ad esempio perché un pod non è stato avviato o chi ha eliminato un deployment critico) eseguendo query e analizzando i log GKE.
Queste informazioni sono importanti per gli amministratori e gli operatori della piattaforma che devono eseguire l'analisi della causa principale dei problemi a livello di cluster, controllare le modifiche e comprendere le tendenze del comportamento del sistema. È anche essenziale per gli sviluppatori di applicazioni per il debug di errori specifici dell'applicazione, il tracciamento dei percorsi delle richieste e la comprensione del comportamento del codice nell'ambiente GKE nel tempo. Per maggiori informazioni sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli e attività comuni degli utenti GKE.
Comprendere i tipi di log chiave per la risoluzione dei problemi
Per aiutarti a risolvere i problemi, Cloud Logging raccoglie e aggrega automaticamente diversi tipi di log chiave dai tuoi cluster GKE, dalle app containerizzate e da altri serviziGoogle Cloud :
Log dei nodi e del runtime (
kubelet
,containerd
): i log dei servizi dei nodi sottostanti. Poichékubelet
gestisce il ciclo di vita di tutti i pod sul nodo, i suoi log sono essenziali per la risoluzione dei problemi come avvii di container, eventi di esaurimento della memoria, errori di probe e errori di montaggio del volume. Questi log sono fondamentali anche per diagnosticare problemi a livello di nodo, ad esempio un nodo con statoNotReady
.Poiché containerd gestisce il ciclo di vita dei container, incluso il pull delle immagini, i suoi log sono fondamentali per la risoluzione dei problemi che si verificano prima che kubelet possa avviare il container. I log di containerd ti aiutano a diagnosticare i problemi a livello di nodo in GKE, perché documentano le attività specifiche e i potenziali errori del runtime del container.
Log dell'app (
stdout
,stderr
): i flussi di output ed errori standard dei processi containerizzati. Questi log sono essenziali per il debug di problemi specifici dell'app, come arresti anomali, errori o comportamenti imprevisti.Audit log: questi log rispondono alla domanda "chi ha fatto cosa, dove e quando?" per il tuo cluster. Monitorano le azioni amministrative e le chiamate API effettuate al server API Kubernetes, il che è utile per diagnosticare i problemi causati da modifiche alla configurazione o accessi non autorizzati.
Scenari comuni di risoluzione dei problemi
Dopo aver identificato un problema, puoi eseguire query su questi log per scoprire cosa è successo. Per aiutarti a iniziare, la revisione dei log può aiutarti a risolvere questi problemi:
- Se un nodo ha lo stato
NotReady
, esamina i log del nodo. I logkubelet
econtainerd
spesso rivelano la causa sottostante, ad esempio problemi di rete o vincoli di risorse. - Se il provisioning di un nuovo nodo non va a buon fine e il nodo non riesce a unirsi al cluster, esamina i log della porta seriale del nodo. Questi log acquisiscono l'attività di avvio fase iniziale di avvio e di avvio di kubelet prima che gli agenti di logging del nodo siano completamente attivi.
- Se un pod non è stato avviato in passato, esamina i log dell'app per verificare la presenza di arresti anomali. Se i log sono vuoti o il pod non può essere pianificato, controlla i log di controllo per gli eventi pertinenti o i log dei nodi sul nodo di destinazione per indizi sulla pressione delle risorse o sugli errori di pull delle immagini.
- Se un deployment critico è stato eliminato e nessuno sa perché, esegui una query negli audit log Attività di amministrazione. Questi log possono aiutarti a identificare l'utente o il service account che ha emesso la chiamata API di eliminazione, fornendo un punto di partenza chiaro per la tua indagine.
Come accedere ai log
Utilizza Esplora log per eseguire query, visualizzare e analizzare i log GKE nella console Google Cloud . Esplora log offre potenti opzioni di filtro che ti aiutano a isolare il problema.
Per accedere a Esplora log e utilizzarlo, completa i seguenti passaggi:
Nella console Google Cloud , vai alla pagina Esplora log.
Nel riquadro della query, inserisci una query. Utilizza il linguaggio di query di Logging per scrivere query mirate. Ecco alcuni filtri comuni per iniziare:
Tipo di filtro Descrizione Valore di esempio resource.type
Il tipo di risorsa Kubernetes. k8s_cluster
,k8s_node
,k8s_pod
,k8s_container
log_id
Il flusso di log della risorsa. stdout
,stderr
resource.labels.RESOURCE_TYPE.name
Filtra le risorse con un nome specifico.
SostituisciRESOURCE_TYPE
con il nome della risorsa su cui vuoi eseguire la query. Ad esempio,namespace
opod
.example-namespace-name
,example-pod-name
severity
Il livello di gravità del log. DEFAULT
,INFO
,WARNING
,ERROR
,CRITICAL
jsonPayload.message=~
Una ricerca con espressione regolare per il testo all'interno del messaggio di log. scale.down.error.failed.to.delete.node.min.size.reached
Ad esempio, per risolvere i problemi relativi a un pod specifico, potresti voler isolare i relativi log degli errori. Per visualizzare solo i log con gravità
ERROR
per quel pod, utilizza la seguente query:resource.type="k8s_container" resource.labels.pod_name="POD_NAME" resource.labels.namespace_name="NAMESPACE_NAME" severity=ERROR
Sostituisci quanto segue:
POD_NAME
: il nome del pod che presenta problemi.NAMESPACE_NAME
: lo spazio dei nomi in cui si trova il pod. Se non sai qual è lo spazio dei nomi, esamina la colonnaNamespace
dell'output del comandokubectl get pods
.
Per altri esempi, consulta Query correlate a Kubernetes nella documentazione di Google Cloud Observability.
Fai clic su Esegui query.
Per visualizzare il messaggio di log completo, inclusi il payload JSON, i metadati e il timestamp, fai clic sulla voce di log.
Per maggiori informazioni sui log di GKE, consulta Informazioni sui log di GKE.
Passaggi successivi
Leggi Esegui il monitoraggio proattivo con Cloud Monitoring (la pagina successiva di questa serie).
Vedi questi concetti applicati nello scenario di esempio per la risoluzione dei problemi.
Per consigli sulla risoluzione di problemi specifici, consulta le guide alla risoluzione dei problemi di GKE.
Se non riesci a trovare una soluzione al tuo problema nella documentazione, consulta la sezione Richiedere assistenza per ulteriore aiuto, inclusi consigli sui seguenti argomenti:
- Aprire una richiesta di assistenza contattando l'assistenza clienti cloud.
- Ricevere assistenza dalla community
ponendo domande su StackOverflow e utilizzando il tag
google-kubernetes-engine
per cercare problemi simili. Puoi anche unirti al canale Slack#kubernetes-engine
per ulteriore assistenza della community. - Apertura di bug o richieste di funzionalità utilizzando lo strumento di monitoraggio dei problemi pubblico.