如何将 kubectl 日志保存到本地文件?

26

我可以通过运行 'kubectl logs podName' 来查看特定 pod 的日志。我也看到了日志包含一个 --log-dir 选项,但似乎并不起作用。是否有某种配置可以更改,使日志保存到主机上的特定文件中?

3个回答

42
kubectl logs pod_name > app.log

例如,如果您有一个名为app-6b8bdd458b-kskjhkube Pod,并且希望将此Pod的日志保存到名为app.log的文件中,则命令应为:
kubectl logs app-6b8bdd458b-kskjh > app.log

3
这种方法可能不适用于运行时间较长且具有冗长日志的进程,特别是在GKE上,因为日志会定期刷新。因此,我建议在pod启动后立即启动 kubectl log -f <podname> > pod.log - Fabrice Jammes
您还可以使用选择器轻松访问。例如:kubectl logs -l app=<your-label>。 - igelr

4
注意:这可能不是如何使日志转到主机的直接答案,但它提供了一种将日志传输到主机的方法。这可能不是最好的答案,但这是我所知道的,所以我分享一下。如果您有更直接的解决方案,请回答。
您可以使用fluentd来实现此操作。这里有一个关于如何设置它的教程。您可以配置它将日志写入挂载的主机目录中的文件,或者让它写入S3。它还允许您聚合所有容器的所有日志,这可能有用也可能没用。结合ElasticSearch和Kibana,您可以组合一个相当强大的日志堆栈。当然,这将取决于您的用例。

我正在调查这个问题。Kubernetes日志确实推荐使用Google Cloud日志记录或ElasticSearch/Kibana,但我的最终目标是在弄清楚如何先将日志获取到本地机器后开发自己的日志记录堆栈。感谢您的回答。一旦我尝试了fluentd,我一定会回报的。 - mbhatia4336

0

Grafana Loki 允许以开发人员友好的方式收集、存储和访问 Pod 日志。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接