2015-10-11 11 views

Antwort

14

Sie können Etiketten verwenden

kubectl logs -l app=elasticsearch 
+4

Gute Lösung und höchstwahrscheinlich genug, um die ursprüngliche Frage zu beantworten, aber es wird nicht Schwanz: "Fehler: nur einer der folgen (- f) oder Selektor (-l) ist erlaubt ". –

+1

Auch keine '--all-namespaces'. –

4

Eine Möglichkeit besteht darin, die Clusterprotokollierung über Fluentd/ElasticSearch wie unter https://kubernetes.io/docs/user-guide/logging/elasticsearch/ beschrieben einzurichten. Sobald sich die Protokolle in ES befinden, können Filter in Kibana einfach angewendet werden, um Protokolle aus bestimmten Containern anzuzeigen.

16

Ich habe ein kleines Bash-Skript namens kubetail erstellt, das dies ermöglicht. Zum Beispiel an Schwanz alle Protokolle für Schoten dem Namen „app1“ Sie tun können:

kubetail app1 

Sie können das Skript here finden.

+0

awesome Arbeit, Kuddos – cahen

+0

Das ist ein wirklich cooles Skript, sollte Teil von kubectl sein, wenn Sie mich fragen – Yanai

1

Ich benutze dieses einfache Skript ein Protokoll aus den Schoten einer Bereitstellung zu erhalten:

#!/usr/bin/env bash 

DEPLOYMENT=$1 

for p in $(kubectl get pods | grep ^${DEPLOYMENT}- | cut -f 1 -d ' '); do 
    echo --------------------------- 
    echo $p 
    echo --------------------------- 
    kubectl logs $p 
done 

Gist of the script

Verbrauch: log_deployment.sh "deployment-name".

Das Skript zeigt dann das Protokoll aller Pods an, die mit diesem "deployment-name" beginnen.

1

Wenn die Schoten nach Bedeutung benannt sind eine einfache Plain Old Bash verwenden:

keyword=nodejs 
command="cat <(" 
for line in $(kubectl get pods | \ 
    grep $keyword | grep Running | awk '{print $1}'); do 
    command="$command (kubectl logs --tail=2 -f $line &) && " 
    done 
command="$command echo)" 
eval $command 

Erläuterung: Schleife durch Lauf Schoten mit dem Namen mit "NodeJS". Lassen Sie das Protokoll für jeden von ihnen parallel ablaufen (einzelnes kaufmännisches Und läuft im Hintergrund) und stellen Sie sicher, dass bei Ausfall eines der Pods der gesamte Befehl beendet wird (doppeltes kaufmännisches Und). Cat die Ströme von jedem der Schwanz Befehle in einen einzigartigen Strom. Eval wird benötigt, um diesen dynamisch erstellten Befehl auszuführen.