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.

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


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.


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.


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

'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


1

Essaye ça,

journaux de queue des pods

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

Exemple :

kubectl --tail 100 journaux app_pod


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.


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> 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.