registri kubectl - continuamente


Risposte:


175
kubectl logs -f <pod-id>

Puoi usare la -fbandiera:

-f, --follow=false: Specify if the logs should be streamed.

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs


che dire dei log per il servizio o qualcosa di diverso dai pod?
Alexander Mills

4
funziona per un breve periodo, quindi i log si interrompono. Devo ctrl-c per uscire da kubectl, quindi riavviarli. Questo mostra più log dopo ma si ferma di nuovo. Qualcuno sa perché i log si fermano in punti casuali quando sono ovviamente ancora generati dal pod?
pferrel

20

kubectl logs --help ti guiderà:

Esempio:

# Begin streaming the logs of the ruby container in pod web-1
kubectl logs -f -c ruby web-1

Bandiere:

-f, --follow[=false]: Specify if the logs should be streamed.

Puoi anche aggiungere --since=10mo così iniziare da quel tempo relativo fa.


può esserci più di un contenitore in un pod?
Alexander Mills

@AlexanderMills sì, questo è il modello "sidecar"
grokpot

6

Avevo bisogno di accedere ai registri di un pod di lunga durata e ho -finiziato a trasmettere i registri da giorni fa, il che avrebbe richiesto ore per arrivare dove avevo bisogno di visualizzare (solo gli ultimi due minuti circa).

C'è una --since=10mbandiera, ma non sembra funzionare per me.

Ciò che ha fatto miracoli era --tail=100, dov'è 100il numero di righe recenti da visualizzare.


4

aspetta che i kubes girino su pod poi vai avanti

k8s_pod=some_pod
kubectl get pods -w $k8s_pod | while read LOGLINE
do
   [[ "${LOGLINE}" == *"Running"* ]] && pkill -P $$ kubectl
done

tronchi di coda

for line in $(kubectl get pods | grep $k8s_pod | awk '{print $1}'); do
    kubectl logs -f $line | tee logfile
done

cercare l'indicatore di successo

tail logfile | grep successful! 
RESULT=$?
exit $RESULT

'riuscito!' potrebbe essere necessario modificare a seconda del pod.
ddtraveller

Ho preso le prime due parti da diversi altri post StackOverflow quindi non posso prendermi il merito per quelli del tutto, ma il combo spero servirà ben altro ...
ddtraveller

4

Se vuoi ottenere il flusso di log da un'app multi pod puoi usare kubetail , ad esempio:

kubectl get pods

NAME                   READY     STATUS    RESTARTS   AGE
app2-v31-9pbpn         1/1       Running   0          1d
app2-v31-q74wg         1/1       Running   0          1d

kubetail app2

Con questo comando, kubetail sta pedinando i log da pod app2-v31-9pbpn e app2-V31-q74wg


1

Prova questo,

tronchi di coda da baccelli

kubectl --tail <"numero di righe"> registra <"pod_name">

Esempio :

kubectl --tail 100 log app_pod


0

log di kubctl -f = true [nome-pod] -c [nome-contenitore]

Se hai solo un singolo contenitore sul pod, il nome del contenitore non è necessario altrimenti usa il nome del contenitore con l'opzione -c. -f ie follow è false per impostazione predefinita. Se non lo imposti su true, otterrai un'istantanea dei log del contenitore.


0

Puoi seguire i log con -f

kubectl logs -f <pod_name>

Se i registri vengono interrotti molto probabilmente il pod si blocca, puoi verificare se il pod è effettivamente in esecuzione o meno? Controlla l'età forse o:

kubectl describe deploy/ds <deploy_or_ds_name>?

Oppure puoi anche controllare i log per il contenitore all'interno del pod in cui sono presenti più contenitori

kubectl -f <pod_name> -c <container_name> 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.