问题描述
我正在尝试了解K8s集群中Docker和Fluentd之间的交互。我已经看到了需要配置Docker才能输出到日志记录驱动程序的地方,并且Fluentd可以用作日志记录驱动程序,例如here。
另一方面,我看到过一些帖子(例如this或this),其中Docker不知道Fluentd作为DaemonSet的存在。
我的全部意图是进行日志轮换,但是我不确定在位的Fluentd是否真的轮换Docker写入的日志,因此我不会以日志占用的节点中的整个存储空间为最终结果随着时间的推移。在不知道Docker是否存在Fluentd的情况下使用FluentD DaemonSet是否足够?我还需要通过某种驱动程序以某种方式将Docker连接到Fluentd吗?
解决方法
每个official k8s logging architecture码头工人(或任何其他运行时)都不需要了解FluentBit,Fluentd,Filebeat或您使用的任何其他日志收集器。实际上,您一次可以使用多个日志收集器!
同一文档指出k8s不负责日志轮换,因此您可以自己设置日志轮换。另一端的Fluentd / FluentBit守护程序也不会旋转日志文件,但是它能够跟踪日志旋转并相应地调整尾光标(默认情况下)。
到目前为止,最容易实现该体系结构的方法是
- 默认保留kubelet和docker设置
- 确保应用记录stdout / stderr
- 确保存在对数旋转:许多k8s工人AMI,例如EKS已经拥有它。
- 设置FluentBit日志收集器守护程序https://github.com/helm/charts/tree/master/stable/fluent-bit