【问题标题】:Docker + Fluentd in K8s for log rotation: Does Docker need to know the existence of Fluentd?K8s 中的 Docker + Fluentd 进行日志轮换:Docker 是否需要知道 Fluentd 的存在?
【发布时间】:2021-01-04 02:10:12
【问题描述】:

我试图了解 Docker 和 Fluentd 在 K8s 集群中的交互。我见过需要配置 Docker 输出到日志驱动的地方,而 Fluentd 可以用作日志驱动,比如here

另一方面,我看到一些帖子(如 thisthis),其中 Docker 不知道 Fluentd 作为 DaemonSet 的存在。

我的全部意图是进行日志轮换,但是我不确定是否使用 Fluentd 是否真的会轮换 Docker 写入的日志,所以我最终不会让日志占用节点中的整个存储空间随着时间的推移。在 Docker 不知道 Fluentd 存在的情况下使用 FluentD DaemonSet 是否足够?o 我还需要通过驱动程序以某种方式将 Docker 连接到 Fluentd?

【问题讨论】:

    标签: docker logging kubernetes fluentd log-rotation


    【解决方案1】:

    每个official k8s logging architecture docker(或任何其他运行时)不需要了解 FluentBit、Fluentd、Filebeat 或您使用的任何其他日志收集器。实际上,您一次可以使用多个日志收集器!

    同一个文档说k8s不负责日志轮换,所以你自己设置了一个logrotate。另一端的 Fluentd/FluentBit 守护进程也不会轮换日志文件,但它确实能够跟踪日志轮换并相应地调整尾部光标(默认情况下)。

    到目前为止,实现架构最简单的方法是

    【讨论】:

    • "确保有 logrotate:许多 k8s worker AMI,例如 EKS 已经有它。"你能详细说明一下吗?这是关键部分。另一方面,您也可以使用 fluentd 配置日志轮换。该配置与您提出的此解决方案有何关系? docs.fluentd.org/deployment/logging#log-rotation-setting
    • By default, Fluentd does not rotate log files. - 这是我一直依赖的。 1. 有时是系统 github.com/awslabs/amazon-eks-ami/blob/… 2. 有时是 docker 设置 github.com/kubernetes/kops/blob/… 。但我从未见过没有内置日志轮换的 k8s worker 发行版。
    • 如果您自己构建 - 是的,您需要使用其中任何一种方式来旋转自己。不要为此使用 fluentd daemonset - worker 健康不应依赖于通过 API 创建的对象(例如 daemonsets)。如果 daemonset 的推出会以某种方式卡住 - 你不希望你的工作人员宕机。
    • “确保” - 检查它是否存在,如果不存在 - 添加它。
    • 好吧,如果这是真的digitalocean.com/community/questions/… - 太糟糕了。在另一篇文章中,他们提到了 logrotate:digitalocean.com/community/tutorials/…。您应该能够 fork worker 映像(使用非托管),或者他们应该解决那里的所有系统级问题(托管)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2018-12-08
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多