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.