【问题标题】:How do I save kubectl logs to a file on my host machine?如何将 kubectl 日志保存到主机上的文件中?
【发布时间】:2017-04-25 11:05:53
【问题描述】:

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

【问题讨论】:

    标签: docker kubernetes kubectl minikube


    【解决方案1】:
    kubectl logs pod_name > app.log
    

    例如,如果您有一个名为 app-6b8bdd458b-kskjh 的 kube pod,并且您打算将此 pod 中的 日志 保存到文件名 app.log,那么命令应该是

    kubectl logs app-6b8bdd458b-kskjh > app.log
    

    【讨论】:

    • 这可能不适用于具有详细日志的长时间运行的进程,尤其是在定期刷新日志的 GKE 上。所以我建议在 pod 启动后立即启动 kubectl log -f <podname> > pod.log。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      注意:这可能不是如何使日志进入主机的直接答案,但它确实提供了一种将日志获取到机器的方法。这可能不是最好的答案,但这是我所知道的,所以我正在分享。如果您有更直接的解决方案,请回答。

      您可以使用fluentd 执行此操作。 Here 是关于如何设置它的教程。您可以将其配置为写入已挂载的主机目录中的文件或让它写入 S3。它还允许您聚合所有容器中的所有日志,这些日志可能有用也可能没用。结合ElasticSearch and Kibana,您可以组合一个非常强大的日志堆栈。当然,这取决于您的用例。

      【讨论】:

      • 我现在正在调查这个。 Kubernetes 日志确实在推动 Google Cloud 日志或 ElasticSearch/Kibana,但我的最终目标是在我弄清楚如何首先在本地机器上获取日志之后开发自己的日志堆栈。谢谢你的回答。一旦我玩过fluentd,我一定会回来报告的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-29
      • 1970-01-01
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      相关资源
      最近更新 更多