简化 Kubernetes 中 Fluent Bit 和 Fluentd 的管理
Fluent Operator 为基于 Fluent Bit 和 Fluentd 构建日志层提供了极大的灵活性。
安装后,Fluent Operator 提供以下功能:
尽管 Fluent Bit 和 Fluentd 都能收集、处理(解析和过滤)日志并将其转发到最终目标,但它们在不同方面各有优势。
Fluent Bit 因其轻量和高效,是日志代理的理想选择;而 Fluentd 由于其丰富的插件,在日志高级处理方面更加强大。
Fluent Operator 包含 Fluent Bit 和 Fluentd 的 CRD 及控制器,允许您根据需要以上述 3 种模式配置日志处理管道。
Fluent Bit 将以 DaemonSet 形式部署,而 Fluentd 将以 StatefulSet 形式部署。整体工作流程如下所述:
为 Fluent Bit 定义了以下 CRD:
FluentBit:定义 Fluent Bit DaemonSet 及其配置。要与 FluentBit Operator 配合实现动态配置重载,需要自定义 Fluent Bit 镜像 ghcr.io/fluent/fluent-operator/fluent-bit。ClusterFluentBitConfig:选择集群级别的输入/过滤/输出插件,并将最终配置生成到 Secret 中。FluentBitConfig:选择命名空间级别的过滤/输出/解析器和集群级别的解析器插件,并将最终配置生成到 Secret 中。ClusterInput:定义集群级别的输入配置段。Parser:定义命名空间级别的解析器配置段。ClusterParser:定义集群级别的解析器配置段。MultilineParser:定义命名空间级别的多行解析器配置段。ClusterMultilineParser:定义集群级别的多行解析器配置段。Filter:定义命名空间级别的过滤配置段。ClusterFilter:定义集群级别的过滤配置段。Output:定义命名空间级别的输出配置段。ClusterOutput:定义集群级别的输出配置段。每个 ClusterInput、ClusterParser、ClusterFilter、ClusterMultilineParser、ClusterOutput 都代表一个 Fluent Bit 配置段,由 ClusterFluentBitConfig 通过标签选择器选择。Fluent Operator 监听这些对象,构建最终配置,并创建 Secret 存储该配置,随后将其挂载到 Fluent Bit DaemonSet 中。整体工作流程如下:
为使 Fluent Bit 在配置发生变化时能够获取并使用最新配置,添加了一个名为 Fluent Bit watcher 的包装器,用于在检测到 Fluent Bit 配置变化后立即重启 Fluent Bit 进程。这样,无需重启 Fluent Bit pod 即可重载新配置。采用这种方式重载配置是因为 Fluent Bit 本身没有重载接口。更多详情请参考此https://github.com/fluent/fluent-bit/issues/365%E3%80%82
为 Fluentd 定义了以下 CRD:
Fluentd:定义 Fluentd StatefulSet 及其配置。要与 Fluentd Operator 配合实现动态配置重载,需要自定义 Fluentd 镜像 kubesphere/fluentd。FluentdConfig:选择集群级别或命名空间级别的输入/过滤/输出插件,并将最终配置生成到 Secret 中。ClusterFluentdConfig:选择集群级别的输入/过滤/输出插件,并将最终配置生成到 Secret 中。Filter:定义命名空间级别的过滤配置段。ClusterFilter:定义集群级别的过滤配置段。Output:定义命名空间级别的输出配置段。ClusterOutput:定义集群级别的输出配置段。运行 Fluent Operator 需要 Kubernetes v1.16.13+。
安装最新稳定版本
kubectl apply -f https://github.com/fluent/fluent-operator/releases/latest/download/setup.yaml
# 您可以在 manifests/setup/kustomization.yaml 中修改命名空间
# 然后使用以下命令安装到其他命名空间
# kubectl kustomize manifests/setup/ | kubectl apply -f -
安装开发版本
kubectl apply -f https://raw.githubusercontent.com/fluent/fluent-operator/master/manifests/setup/setup.yaml
有关 Fluent Operator 各种使用场景的更多信息,可参考 https://github.com/kubesphere-sigs/fluent-operator-walkthrough%E3%80%82
本指南将配置一个日志流水线,包括 Fluent Bit DaemonSet 及其日志输入/过滤/输出配置,用于收集 Kubernetes 日志(包括容器日志和 kubelet 日志)。
[!NOTE] 开始前,需要一个运行中的 Elasticsearch v5+ 集群来接收日志数据。请务必根据您自己的 Elasticsearch 配置调整 output-elasticsearch.yaml。Kafka 和 Fluentd 输出为可选配置,默认处于关闭状态。
kubectl apply -f manifests/logging-stack
# 可在 manifests/logging-stack/kustomization.yaml 中修改命名空间
# 然后使用以下命令安装到其他命名空间
# kubectl kustomize manifests/logging-stack/ | kubectl apply -f -
Kubernetes 日志流水线(通过 Fluent Bit 收集容器日志)默认已启用(Kubernetes: true)。如需同时部署 Fluentd 作为日志聚合层:
helm upgrade fluent-operator fluent/fluent-operator -n fluent --set fluentd.enable=true
几分钟后,您应能看到可用的索引:
$ curl localhost:9200/_cat/indices
green open ks-logstash-log-2020.04.26 uwQuoO90TwyigqYRW7MDYQ 1 1 99937 0 31.2mb 31.2mb
成功!
Linux 审计框架提供了符合 CAPP(受控访问保护配置文件)的审计系统,可可靠地收集系统上任何与安全相关(或非安全相关)事件的信息。参考 manifests/logging-stack/auditd,它支持从 Linux 审计框架收集审计日志的方法。
kubectl apply -f manifests/logging-stack/auditd
# 可在 manifests/logging-stack/auditd/kustomization.yaml 中修改命名空间
# 然后使用以下命令安装到其他命名空间
# kubectl kustomize manifests/logging-stack/auditd/ | kubectl apply -f -
几分钟后,您应能看到可用的索引:
$ curl localhost:9200/_cat/indices
green open ks-logstash-log-2021.04.06 QeI-k_LoQZ2h1z23F3XiHg 5 1 404879 0 298.4mb 149.2mb
Fluentd 作为日志转发层,通过网络接收来自 Fluent Bit 或其他应用的日志。
有关 Fluent Operator Fluentd CRD 的各种使用场景的更多信息,可参考 https://github.com/kubesphere-sigs/fluent-operator-walkthrough#fluent-bit--fluentd-mode%E3%80%82
此处可查看支持的 Fluent Bit 插件。
此处可查看支持的 Fluentd 插件。
该项目于2021年被Fluent社区接纳为子项目,目前是一个厂商中立、社区驱动的项目。
欢迎加入 CNCF Slack 上的 #fluent-operator 频道与我们交流。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务