kubectl logs – continu

krijgt de laatste logboeken van mijn implementatie – ik werk aan een bug en ben geïnteresseerd in de logboeken tijdens runtime – Hoe kan ik een continue stroom van logboeken krijgen?

edit: vraag aan het einde gecorrigeerd.


Antwoord 1, autoriteit 100%

kubectl logs -f <pod-id>

U kunt de vlag -fgebruiken:

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

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


Antwoord 2, autoriteit 12%

kubectl logs --helpzullen u begeleiden:

Voorbeeld:

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

Vlaggen:

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

Je kunt ook --since=10mtoevoegen of zo beginnen vanaf die relatieve tijd geleden.


Antwoord 3, autoriteit 6%

Ik had toegang nodig tot de logs van een langlopende pod, en -fbegon met het streamen van logs van dagen geleden, wat uren zou hebben gekost om te komen waar ik het moest zien (alleen de laatste paar minuten of zo).

Er is een --since=10mvlag, maar dat leek niet te werken voor mij.

Wat wonderen deed was --tail=100, waarbij 100het aantal recente regels is dat moet worden weergegeven.


Antwoord 4, autoriteit 4%

Probeer dit,

staartlogboeken van peulen

kubectl –tail <“aantal lijnen”> logs <“pod_name”>

Voorbeeld:

kubectl –tail 100 logs app_pod


Antwoord 5, autoriteit 3%

Als u de stroom van logbestanden van een multi-pod app wilt krijgen, kunt u bijvoorbeeld kubetailgebruiken :

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

Met dat commando volgt kubetailde logs van pod app2-v31-9pbpnenapp2-v31-q74wg


Antwoord 6, autoriteit 2%

wacht tot kubes de pod laten draaien en ga dan verder…

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

staartlogboeken

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

zoek naar succesindicator

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

Antwoord 7

Je kunt logs volgen met -f

kubectl logs -f <pod_name>

Als de logboeken worden gestopt, crasht de pod hoogstwaarschijnlijk, kunt u dan controleren of de pod daadwerkelijk actief is of niet? Controleer leeftijd misschien of :

kubectl describe deploy/ds <deploy_or_ds_name>?

Of je kunt ook de logboeken voor de container in de pod controleren, er zijn meerdere containers

kubectl logs -f <pod_name> -c <container_name> 

Antwoord 8

Suggestie

Het lijkt erop dat u logboeken vanaf uw terminal wilt bekijken zonder een “zware” logboekoplossing van derden te gebruiken.

Daarvoor zou ik overwegen om K9Ste gebruiken, een geweldige CLI-tool waarmee je controle krijgt over uw cluster – bekijk de verschillende k8s-bronnen, navigeer tussen workloads en duik diep in logboeken en bekijk ze continu.


Hoe de tool te gebruiken (in een paar regels)

Na het instellen van de K8S-context in de huidige terminal, voer je gewoon k9sin om op het dashboard te komen. Van daaruit kunt u de resource (service,deployment,pod..) die u wilt bekijken typen door ":"– en de resourcenaam te typen.

Je kunt ook beginnen op het naamruimteniveau en helemaal naar beneden gaan naar de pods en containerslogs – zoals te zien is in het onderstaande voorbeeld:

voer hier de afbeeldingsbeschrijving in


Alternatieven

Als u niet alleen aan de CLI gebonden bent, maar toch lokaal wilt werken, raad ik u Lensaan.


Antwoord 9

kubctl-logboeken -f=true [podnaam] -c [containernaam]

Als u slechts één container boven de pod heeft, is de containernaam niet nodig, gebruik anders de containernaam met de optie -c.
-d.w.z. volgen is standaard onwaar. Als u dit niet op true instelt, krijgt u een momentopname van uw containerlogboeken.

Other episodes