Come visualizzare i log del pod Kubernetes con Kubectl

0
361

La visualizzazione dei log del pod è spesso il primo passo per diagnosticare un problema con il cluster& #8217;s carichi di lavoro. Ecco come utilizzare Kubectl per trasmettere in streaming i log sul tuo terminale, permettendoti di ispezionare l'output dalla tua applicazione.

Per iniziare

Make assicurati di avere Kubectl installato e connesso al tuo cluster. Puoi specificare un file Kubeconfig impostando la variabile d'ambiente KUBECONFIG nella tua shell:

export KUBECONFIG=~/.kube/my-cluster.yaml

Quindi usa Kubectl per elencare i tuoi Pod:

kubectl get pods

Ricorda di aggiungere il flag –namespace quando i tuoi Pod vivono al di fuori dello spazio dei nomi predefinito:

kubectl –namespace my-namespace get pods

Aggiungere un alias temporaneo alla tua shell è un buon modo per abbreviare questo passaggio, aiutandoti a eseguire diversi comandi sullo stesso spazio dei nomi:

alias k=”kubectl –namespace my-namespace” k get pods

Accesso ai log dei pod

Il comando kubectl logs ti consente di ispezionare i log prodotti da un Pod:

kubectl registra la pubblicità del nome del pod

I log esistenti del Pod verranno inviati al tuo terminale. Quando il Pod è formato da più di un contenitore, è necessario specificare anche il nome del contenitore che si desidera ispezionare:

kubectl logs nome-pod nome-contenitore

In alternativa, imposta il flag –all-containers per includere le righe di registro prodotte da uno qualsiasi dei i contenitori nel Pod. Fai attenzione che potresti vedere un output dettagliato e ripetitivo quando questo flag viene usato contro un Pod occupato:

kubectl logs pod-name –all-containers

Puoi anche ottenere i log da un insieme di Pod con un dato etichetta. Ciò ti consente di aggregare i log di diversi Pod, a condizione che condividano tutti la stessa etichetta:

kubectl logs -l my-label=my-value –all-containers

Registri in streaming continuo

Il comando plain logs emette i registri Pod attualmente memorizzati e quindi esce. Aggiungi il flag -f (–follow) al comando per seguire i log e trasmetterli in live streaming al tuo terminale.

Kubectl emetterà ogni nuova riga di log nel tuo terminale finché non interrompi il comando con Ctrl+ C. Ciò equivale a utilizzare tail -f con un file di registro locale in un ambiente non containerizzato.

Visualizzazione dei registri precedenti

I log di kubectl non includeranno le linee di log prodotte da vecchi contenitori che un tempo erano membri del Pod ma da allora sono stati sostituiti. È possibile accedere a questi registri aggiungendo il flag -p (–previous).

Annuncio

Kubectl farà emergere l'intero registro memorizzato per il Pod, comprese le righe emesse dai contenitori che da allora sono stati terminati.

Recupero dei registri recenti

A volte non è necessario visualizzare l'intero flusso di log. Kubectl supporta un flag –since che fa emergere le righe di log emesse dopo un determinato tempo:

kubectl registra il nome del pod –since=2h

Questo comando mostrerà l'output del log dal nome del pod che è stato prodotto all'interno del ultime due ore. Un'altra variante, –since-time, supporta una stringa di timestamp conforme a RFC3339 invece dell'espressione relativa del tempo mostrata sopra.

Il flag –tail è un'altra opzione per condensare i log. Questo limita il numero di righe visualizzate, evitando un terminale completo quando hai solo bisogno di vedere un output molto recente:

# Mostra le ultime 10 righe del log kubectl logs pod-name –tail=10

Kubectl non mostra i timestamp delle righe per impostazione predefinita poiché molte applicazioni li includono già nel loro output di registro. Aggiungi il flag –timestamps per fare in modo che Kubectl aggiunga i timestamp all'inizio delle righe quando il tuo carico di lavoro non li fornisce.

Puoi anteporre anche i nomi dei pod e dei contenitori ispezionati per registrare le righe. Questa funzionalità viene attivata con il flag –prefix. Può essere combinato con –timestamps per visualizzare l'ora in cui ogni riga è stata creata e la fonte da cui ha avuto origine.

Accesso ai log da un'altra risorsa Tipi

i log di kubectl funzionano con le risorse di distribuzione e lavoro oltre ai pod:

i log di kubectl lavoro/il mio lavoro kubectl registra la distribuzione/la mia-distribuzione Annuncio

Otterrai i log dal primo contenitore all'interno del processo o della distribuzione. Usa il flag –all-containers per visualizzare i log creati da uno qualsiasi dei contenitori corrispondenti. Puoi utilizzare tutti i flag descritti sopra se stai visualizzando un pod, un'implementazione o un lavoro.

Gestione log più avanzata

< p>Kubectl non include un modo per filtrare, cercare o trasformare i tuoi log. È meglio convogliare l'output dei log di kubectl in strumenti terminali stabiliti come awk, grep o sed per questo scopo.

kubectl registra il mio-pod | grep search-expression

Analogamente, usa le funzioni di reindirizzamento esistenti nella tua shell per salvare i log in un file:

kubectl logs my-pod > my-pod-logs.txt

Riepilogo

Kubectl ti consente di accedere ai log dalle tue risorse su base per contenitore o in aggregato. Puoi visualizzare un'istantanea dei registri attualmente raccolti, trasmettere continuamente nuove linee al tuo terminale e accedere alle linee storiche emesse dai contenitori terminati.

Il comando viene fornito con alcune opzioni di personalizzazione limitate tra cui un limitatore del conteggio delle linee e una data semplicistica filtraggio. Quando è necessaria un'analisi più impegnativa, reindirizza l'output nei comandi del terminale Unix per analizzare rapidamente i tuoi registri e trovare le cause degli errori nelle tue applicazioni.

Pubblicità

Kubectl raccoglie i registri dall'output standard e dai flussi di errore dei tuoi contenitori È importante assicurarsi di scrivere correttamente l'output su questi flussi poiché un contenitore mal configurato risulterà in un output vuoto quando si eseguono i log di kubectl.