Tailing few lines from huge logs of kubectl logs -f
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?
Solution 1:
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:
https://github.com/boz/kail
https://github.com/wercker/stern
Solution 2:
Try kubectl logs -f pod --tail=10
Solution 3:
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)