如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
简化Kubernetes中Fluent Bit和Fluentd的管理
Fluent Operator为基于Fluent Bit和Fluentd构建日志层提供了极大的灵活性。
安装后,Fluent Operator提供以下功能:
尽管Fluent Bit和Fluentd都能收集、处理(解析和过滤)日志并将其转发到最终目的地,但它们在不同方面各有优势。
Fluent Bit因其轻量高效,是日志采集器的理想选择;而Fluentd则因其丰富的插件,更擅长对日志进行高级处理。
Fluent Operator包含Fluent Bit和Fluentd的CRD及控制器,允许您根据上述三种模式配置日志处理管道。
Fluent Bit将以DaemonSet形式部署,Fluentd将以StatefulSet形式部署。整体工作流程如下:
为Fluent Bit定义了以下CRD:
FluentBit:定义Fluent Bit DaemonSet及其配置。需要自定义Fluent Bit镜像ghcr.io/fluent/fluent-operator/fluent-bit以配合FluentBit Operator实现动态配置重载。ClusterFluentBitConfig:选择集群级别的输入/过滤/输出插件,并将最终配置生成到Secret中。FluentBitConfig:选择命名空间级别的过滤/输出/解析器和集群级别的解析器插件,并将最终配置生成到Secret中。ClusterInput:定义集群级别的输入配置段。Parser:定义命名空间级别的解析器配置段。ClusterParser:定义集群级别的解析器配置段。MultilineParser:定义命名空间级别的多行解析器配置段。ClusterMultilineParser:定义集群级别的多行解析器配置段。Filter:定义命名空间级别的过滤配置段。ClusterFilter:定义集群级别的过滤配置段。Output:定义命名空间级别的输出配置段。ClusterOutput:定义集群级别的输出配置段。每个**ClusterInput、ClusterParser、ClusterFilter、ClusterMultilineParser、ClusterOutput** 都代表一个Fluent Bit配置段,由**ClusterFluentBitConfig**通过标签选择器选择。Fluent Operator监听这些对象,构建最终配置,并创建Secret存储配置,该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镜像kubesphere/fluentd以配合Fluentd Operator实现动态配置重载。FluentdConfig:选择集群级别或命名空间级别的输入/过滤/输出插件,并将最终配置生成到Secret中。ClusterFluentdConfig:选择集群级别的输入/过滤/输出插件,并将最终配置生成到Secret中。Filter:定义命名空间级别的过滤配置段。ClusterFilter:定义集群级别的过滤配置段。Output:定义命名空间级别的输出配置段。ClusterOutput:定义集群级别的输出配置段。运行Fluent Operator需要Kubernetes v1.16.13+。
使用YAML部署Fluent Operator
安装最新稳定版本
kubectl create namespace fluent
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 -
安装开发版本
使用 Helm 部署 Fluent Operator
[!NOTE] 需要 Helm v3.2.1 或更高版本。
标准安装(CRD 包含在图表中):
helm repo add fluent https://fluent.github.io/helm-charts
helm repo update
helm install fluent-operator fluent/fluent-operator \
--create-namespace -n fluent
默认容器运行时为 containerd。如果集群使用不同的运行时,请设置 --set containerRuntime=docker 或 --set containerRuntime=crio。
Helm 在首次安装时会安装 CRD,但在后续的 helm upgrade 或 helm uninstall 调用中不会升级或删除它们。要在升级图表时更新 CRD:
helm pull fluent/fluent-operator --untar
kubectl apply --server-side --force-conflicts -f fluent-operator/crds/
helm upgrade fluent-operator fluent/fluent-operator -n fluent
高级安装 — 通过单独的 fluent-operator-fluent-bit-crds 和 fluent-operator-fluentd-crds 图表实现 CRD 的完整 Helm 生命周期管理:
# 步骤 1:将 Fluent Bit CRD 作为单独管理的发布版本安装
helm install fluent-operator-fluent-bit-crds fluent/fluent-operator-fluent-bit-crds -n fluent --create-namespace
# 步骤 2:将 Fluentd CRD 作为单独管理的发布版本安装(可选)
helm install fluent-operator-fluentd-crds fluent/fluent-operator-fluentd-crds -n fluent
# 步骤 3:安装操作员,跳过 CRD(已在上面安装)
helm install fluent-operator fluent/fluent-operator -n fluent --skip-crds
通过这种方法,可以使用 helm upgrade fluent-operator-fluent-bit-crds / helm upgrade fluent-operator-fluentd-crds 升级 CRD,并可以通过 --set additionalAnnotations."helm\.sh/resource-policy"=keep 防止删除。
有关从 v3.x 升级的更多信息,请参见 MIGRATION-v4.md 指南。
有关 Fluent Operator 的各种用例的更多信息,请参考 https://github.com/kubesphere-sigs/fluent-operator-walkthrough%E3%80%82
本指南提供了一个日志管道,包括 Fluent Bit DaemonSet 及其日志输入/过滤/输出配置,用于收集 Kubernetes 日志,包括容器日志和 kubelet 日志。
[!NOTE] 开始之前,您需要一个运行中的 Elasticsearch v5+ 集群来接收日志数据。请记住根据您自己的 es 设置调整 output-elasticsearch.yaml。Kafka 和 Fluentd 输出是可选的,默认情况下处于关闭状态。
使用 YAML 部署 Kubernetes 日志栈
kubectl apply -f manifests/logging-stack
# 您可以在 manifests/logging-stack/kustomization.yaml 中更改命名空间
# 然后使用以下命令安装到另一个命名空间
# kubectl kustomize manifests/logging-stack/ | kubectl apply -f -
使用 Helm 部署 Kubernetes 日志管道
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 插件。
此处可找到插件组信息。
此处可使用 Fluent Bit 中的内置 HTTP 服务器。
此处可在 Fluent Bit 中自定义解析器。
如果您想了解更多关于 Fluent-Operator 的信息,请参考 其他。
此处可了解如何在 FluentBit 和 Fluentd 中使用自定义插件。
fluentd.fluent.iofluentbit.fluent.io确保为本地开发 Kubernetes 集群加载了 KUBECONFIG 文件。
make installexport NAMESPACE=something 设置操作员的命名空间make runAPI 文档是自动生成的。要修改它,请编辑结构体字段上方的注释,然后运行 go run cmd/doc-gen/main.go。
manifests/setup 文件夹下的大多数文件是从 config 自动生成的。不要直接编辑它们,而是运行 make manifests,然后相应地替换这些文件。
来自真实用户的反馈,见证轩辕镜像的优质服务