收集 kubernetes 的 pods 日志

Collect kubernetes' pods logs

我正在尝试收集我的应用程序容器在其整个生命周期内的日志。这些容器 运行 在 Kubernetes pods 中,我找到了像 Fluentd 这样的解决方案,但我也发现我需要指定后端(Elasticsearch、AWS S3 等),而我想收集日志在具有特定名称的文件中,例如 podname_namespace_containername.json,然后使用脚本解析这些文件。这可能是流利的吗?

到目前为止,设置日志收集的最快方法是 https://github.com/helm/charts/tree/master/stable/fluent-bit。有关所有可用选项,请参阅 values.yaml。它支持多种后端,如 ES、S3、Kafka。每个日志事件都丰富了 pod 元数据(pod 名称、命名空间等)并进行了标记,以便您可以在后端单独组织处理。例如。在后端,您可以 select 并仅解析某些命名空间中的某些 pods。

根据 https://kubernetes.io/docs/concepts/cluster-administration/logging/ 你登录 stdout/stderr,它被写入底层节点,日志收集器(daemonset)收集所有内容并进一步发送。

Kubernetes 中的 FluentBit daemonset 正是实现了这个架构。有关 FluentBit 的更多文档:https://docs.fluentbit.io/manual/concepts/data-pipeline