journaux kubectl - en continu

99
kubectl logs <pod-id>

obtient les derniers journaux de mon déploiement - Je travaille sur un bogue et je souhaite connaître les journaux à l'exécution - Comment puis-je obtenir un flux continu de journaux?

edit: question corrigée à la fin.

Radio Nationale Publique
la source

Réponses:

176
kubectl logs -f <pod-id>

Vous pouvez utiliser le -fdrapeau:

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

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

Yu-Ju Hong
la source
qu'en est-il des journaux pour le service ou autre chose que les pods?
Alexander Mills
4
cela fonctionne pendant une courte période, puis les journaux s'arrêtent. Je dois ctrl-c pour sortir de kubectl, puis les redémarrer. Cela montre plus de journaux après mais s'arrête à nouveau. Quelqu'un sait pourquoi les journaux s'arrêtent à des endroits aléatoires alors qu'ils sont manifestement toujours générés par le pod?
pferrel le
20

kubectl logs --help vous guidera:

Exemple:

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

Drapeaux:

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

Vous pouvez également ajouter --since=10mou ainsi commencer à partir de cette heure relative.

manojlds
la source
peut-il y avoir plus d'un conteneur dans un pod?
Alexander Mills
@AlexanderMills oui, c'est le modèle "side-car"
grokpot
6

J'avais besoin d'accéder aux journaux d'un pod de longue durée et j'ai -fcommencé à diffuser des journaux d'il y a quelques jours, ce qui aurait pris des heures pour arriver à l'endroit où je devais voir (juste les dernières minutes environ).

Il y a un --since=10mdrapeau, mais cela n'a pas semblé fonctionner pour moi.

Ce qui a fait des merveilles --tail=100, c'est où se 100trouve le nombre de lignes récentes à afficher.

arshbot
la source
4

attendez que les kubes lancent la capsule puis continuez ...

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

journaux de queue

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

rechercher un indicateur de succès

tail logfile | grep successful! 
RESULT=$?
exit $RESULT
ddtraveller
la source
'réussi!' peut devoir changer en fonction de votre pod.
ddtraveller
J'ai pris ces deux premières parties de plusieurs autres articles de stackoverflow, donc je ne peux pas m'en attribuer le mérite, mais le combo, j'espère, servira bien les autres ...
ddtraveller
4

Si vous souhaitez obtenir le flux de journaux à partir d'une application multi-pod, vous pouvez utiliser kubetail , par exemple:

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

Avec cette commande, kubetail est tailing les journaux à partir pod App2-v31-9pbpn et App2-V31-q74wg

db80
la source
1

Essaye ça,

journaux de queue des pods

kubectl --tail <"no of lines"> logs <"pod_name">

Exemple :

kubectl --tail 100 journaux app_pod

Saurabh Bishnoi
la source
0

kubctl logs -f = true [nom-pod] -c [nom-conteneur]

Si vous n'avez qu'un seul conteneur sur le pod, le nom du conteneur n'est pas nécessaire, sinon utilisez le nom du conteneur avec l'option -c. -f ie follow est faux par défaut. Si vous ne le définissez pas sur true, vous obtiendrez un instantané de vos journaux de conteneur.

Jaraws
la source
0

Vous pouvez suivre les journaux avec -f

kubectl logs -f <pod_name>

Si les journaux sont arrêtés, il est fort probable que le pod plante, pouvez-vous vérifier si le pod fonctionne réellement ou non? Vérifiez peut-être l'âge ou:

kubectl describe deploy/ds <deploy_or_ds_name>?

Ou vous pouvez également vérifier les journaux pour le conteneur à l'intérieur du pod car il y a plusieurs conteneurs

kubectl -f <pod_name> -c <container_name> 
Abhi Gadroo
la source