GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come visualizzare i registri dei pod Kubernetes con Kubectl

La visualizzazione dei log del pod è spesso il primo passaggio per la diagnosi di un problema con i carichi di lavoro del tuo cluster. Ecco come utilizzare Kubectl per trasmettere in streaming i log sul tuo terminale, permettendoti di ispezionare l'output dalla tua applicazione.

Per iniziare

Assicurati di aver installato e connesso Kubectl al tuo cluster. Puoi specificare un file Kubeconfig impostando il KUBECONFIG variabile di ambiente nella tua shell:

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

Quindi usa Kubectl per elencare i tuoi Pod:

kubectl get pods

Ricordati di aggiungere il --namespace segnala quando i tuoi Pod risiedono al di fuori dello spazio dei nomi predefinito:

kubectl --namespace my-namespace get pods

L'aggiunta di 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 registri del pod

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

kubectl logs pod-name

I registri esistenti del Pod verranno inviati al tuo terminale. Quando il Pod è formato da più contenitori, devi anche specificare il nome del contenitore che vuoi ispezionare:

kubectl logs pod-name container-name

In alternativa, imposta il --all-containers flag per includere le linee di tronchi prodotte da uno qualsiasi dei contenitori nel Pod. Fai attenzione perché potresti vedere un output dettagliato e ripetitivo quando questo flag viene utilizzato contro un Pod occupato:

kubectl logs pod-name --all-containers

Puoi anche ottenere i log da un set di Pod con una determinata 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

Log in streaming continuo

I semplici logs il comando emette i log del Pod attualmente archiviati e quindi esce. Aggiungi il -f (--follow ) segnala al comando per seguire i log e trasmetterli in streaming sul tuo terminale.

Kubectl emetterà ogni nuova riga di registro nel tuo terminale fino a quando non interromperai il comando con Ctrl+C. Questo equivale a usare tail -f con un file di registro locale in un ambiente non containerizzato.

Visualizzazione dei registri meno recenti

kubectl logs non includerà le linee di tronchi prodotte da vecchi contenitori che un tempo erano membri del Pod ma da allora sono stati sostituiti. È possibile accedere a questi registri aggiungendo il -p (--previous ) bandiera.

Kubectl esporrà quindi l'intero registro archiviato per il Pod, comprese le righe emesse dai contenitori che sono stati successivamente chiusi.

Come ottenere i registri recenti

A volte non è necessario visualizzare l'intero flusso di log. Kubectl supporta un --since segnala quali linee di registro emettono superfici dopo un determinato tempo:

kubectl logs pod-name --since=2h

Questo comando mostrerà l'output del registro da pod-name prodotto nelle ultime due ore. Un'altra variante, --since-time , supporta una stringa timestamp conforme a RFC3339 invece dell'espressione relativa all'ora mostrata sopra.

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

# Shows the last 10 lines of the log
kubectl logs pod-name --tail=10

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

Puoi anche anteporre i nomi dei contenitori e dei contenitori ispezionati alle righe di registro. Questa funzionalità è attivata con il --prefix bandiera. Può essere combinato con --timestamps per visualizzare l'ora in cui ogni riga è stata creata e l'origine da cui ha avuto origine.

Accesso ai log da altri tipi di risorse

kubectl logs funziona con la distribuzione e le risorse di lavoro oltre ai pod:

kubectl logs job/my-job
kubectl logs deployment/my-deployment

Otterrai i log dal primo contenitore all'interno del lavoro o della distribuzione. Usa --all-containers contrassegnare i registri di superficie creati da uno qualsiasi dei contenitori corrispondenti. Puoi utilizzare tutti i flag descritti sopra sia che tu stia visualizzando un pod, una distribuzione o un lavoro.

Gestione dei registri più avanzata

Kubectl non include un modo per filtrare, cercare o trasformare i tuoi log. È meglio inviare i kubectl logs output in strumenti terminali consolidati come awk , grep o sed a questo scopo.

kubectl logs my-pod | grep search-expression

Allo stesso modo, usa le funzionalità 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 container o in forma aggregata. Puoi visualizzare un'istantanea dei registri attualmente raccolti, trasmettere continuamente nuove righe al tuo terminale e accedere alle righe cronologiche emesse dai contenitori terminati.

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

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


Docker
  1. Come visualizzare i registri degli accessi e degli errori di Apache

  2. Come installare Kubernetes con Minikube su Ubuntu 20.04

  3. Come copiare file tra i pod Kubernetes e la tua macchina

  4. Come visualizzare le prestazioni passate con sar in Linux

  5. Come inserire un pod come root?

Come installare Kubernetes con Minikube su Ubuntu 18.04 LTS

Come distribuire un'applicazione multilivello con Kubernetes

Come configurare Kubernetes 1.5 con kubeadm su CentOS

Come visualizzare le statistiche del sistema Linux con Saidar

Come distribuire Docker Compose Stack su Kubernetes con Kompose

Come visualizzare i log degli errori di cPanel