117

kubectl logs -f pod shows all logs from the beginning and it becomes a problem when the log is huge and we have to wait for a few minutes to get the last log. Its become more worst when connecting remotely. Is there a way that we can tail the logs for the last 100 lines of logs and follow them?

Tinkaal Gogoi
  • 4,344
  • 4
  • 27
  • 36

5 Answers5

210

In a cluster best practices are to gather all logs in a single point through an aggregator and analyze them with a dedicated tool. For that reason in K8S, log command is quite basic.

Anyway kubectl logs -h shows some options useful for you:

# Display only the most recent 20 lines of output in pod nginx
kubectl logs --tail=20 nginx

# Show all logs from pod nginx written in the last hour
kubectl logs --since=1h nginx

Some tools with your requirements (and more) are available on github, some of which are:

Yann39
  • 14,285
  • 11
  • 56
  • 84
Nicola Ben
  • 10,615
  • 8
  • 41
  • 65
42

Try kubectl logs -f pod --tail=10

Kun Li
  • 2,570
  • 10
  • 15
11

To fetch tail lines from logs of a pod with multi containers.

kubectl logs <pod name> --all-containers=true --tail=10

To fetch tail lines from logs of pods within an application:

kubectl logs --selector app=<your application> --tail=10

(ex:if your application has 3 pods then output of above command can be 30 logs 10 of each pod logs)

Goli Nikitha
  • 858
  • 3
  • 9
8

You can ues this way to get the first 10 lines

kubectl logs my-pod-name  -n my-ns | head -n 10
bruce wyen
  • 115
  • 1
  • 2
0

You can also follow logs from the end if you are testing something:

kubectl logs my-pod-name --follow

This will work just like running tail -f in bash or other shells.

rpena
  • 55
  • 3
  • This doesn't answer the OPs question and results in the same problem for large logs. You should consider removing this answer, else it will get down voted – fose May 17 '21 at 07:00