从 kubectl logs -f 的巨大日志中拖尾几行

Tailing few lines from huge logs of kubectl logs -f

kubectl logs -f pod 从头开始​​显示所有日志,当日志很大时就会出现问题,我们必须等待几分钟才能获取最后一条日志。远程连接时变得更糟。有没有办法可以跟踪最后 100 行日志的日志并跟踪它们?

在集群中,最佳做法是通过聚合器将所有日志收集到一个点,并使用专用工具对其进行分析。因此,在 K8S 中,日志命令非常基础。

总之kubectl logs -h 显示了一些对您有用的选项:

# 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

github 上提供了一些符合您要求(以及更多)的工具,其中一些是:

尝试kubectl logs -f pod --tail=10

如果你正在测试一些东西,你也可以从最后看日志:

kubectl logs my-pod-name --follow

这将像 运行 tail -f 在 bash 或其他 shell 中一样工作。

从具有多个容器的 pod 的日志中获取尾行。

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

要从应用程序中 pods 的日志中获取尾行:

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

(例如:如果您的应用程序有 3 个 pods,则上述命令的输出可以是 30 个日志,每个 pod 日志 10 个)

你可以用这种方式得到前10行

kubectl logs my-pod-name  -n my-ns | head -n 10