尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【容器日志采集】【三】创建daemonsets采集日志发送到kafka

【容器日志采集】【三】创建daemonsets采集日志发送到kafka
📅 发布时间:2026/6/21 12:51:36

🚀 第三步:部署 DaemonSet

🧠 1. 什么是 DaemonSet?

在 Kubernetes 中,DaemonSet 是一种特殊的控制器,它会确保集群中每个节点上都运行一个 Pod。
适合以下场景:

  • 系统级守护进程(如监控、日志采集)
  • 节点本地任务
  • agent 类型程序

本例通过 DaemonSet 来实现 Fluent Bit 在所有节点上采集容器日志。


📜 2. 参考 DaemonSet 配置文件

apiVersion: apps/v1
kind: DaemonSet
metadata:name: fluent-bitnamespace: logginglabels:app.kubernetes.io/name: fluentbit
spec:selector:matchLabels:name: fluent-bittemplate:metadata:labels:name: fluent-bitspec:serviceAccountName: fluent-bit# 🧭 保持主机网络访问(支持 Use_Kubelet)hostNetwork: truednsPolicy: ClusterFirstWithHostNet# ❌ 排除 node01 节点affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: NotInvalues:- node01tolerations:- operator: Existscontainers:- name: fluent-bitimage: harbor.qiyuanlab.com:30020/library/fluent-bit:4.0.1imagePullPolicy: IfNotPresentsecurityContext:privileged: trueresources:limits:memory: 1500Mirequests:cpu: 500mmemory: 500MivolumeMounts:- name: varlogmountPath: /var/log- name: varlibdockercontainersmountPath: /data/docker/containersreadOnly: true- name: fluentbit-configmountPath: /fluent-bit/etc/# 🕒 时区同步- name: tz-localtimemountPath: /etc/localtimereadOnly: true- name: buffermountPath: /buffersvolumes:- name: varloghostPath:path: /var/log- name: varlibdockercontainershostPath:path: /data/docker/containers- name: fluentbit-configconfigMap:name: fluent-bit-config- name: tz-localtimehostPath:path: /etc/localtime- name: bufferemptyDir: {}

🧭 3. 配置详解与注意事项

🧾 元信息

字段 作用 注意事项
metadata.namespace 部署命名空间 ⚠️ 必须与第一步中创建的命名空间一致(如 logging)
serviceAccountName 使用的服务账号 必须与 RBAC 绑定的 ServiceAccount 名称一致

🧠 网络设置

字段 作用 注意事项
hostNetwork: true Pod 共享宿主机网络 ✅ 方便 Fluent Bit 与 kubelet API 通信,推荐开启
dnsPolicy: ClusterFirstWithHostNet DNS 策略 必须与 hostNetwork 搭配,否则可能出现 DNS 解析异常

🧭 调度设置

字段 作用 注意事项
affinity 节点调度策略 ⚠️ NotIn 表示不在 node01 上部署。可根据业务需要调整
tolerations 污点容忍 ✅ 允许在打了污点的节点上运行日志采集 Pod,避免漏采集

🐳 容器设置

字段 作用 注意事项
image Fluent Bit 镜像地址 ✅ 可使用官方镜像或私有仓库镜像,注意版本一致性
securityContext.privileged: true 提升容器权限 必须打开以访问宿主机日志路径
resources 资源限制与请求 ⚠️ 避免资源抢占过多,同时保证采集稳定性
volumeMounts 挂载日志、配置、时区 挂载路径必须与实际宿主机路径匹配

🧰 Volume 配置

名称 类型 路径 说明
varlog hostPath /var/log 宿主机日志目录
varlibdockercontainers hostPath /data/docker/containers 容器日志目录(按实际环境修改)
fluentbit-config ConfigMap /fluent-bit/etc/ 前一步创建的 Fluent Bit 配置
tz-localtime hostPath /etc/localtime 保持容器时区与宿主机一致
buffer emptyDir /buffers 缓冲目录,避免日志堆积时丢失

⚠️ 特别注意:

  • hostPath 必须与宿主机实际路径一致,否则 Fluent Bit 无法读取日志。
  • 建议 buffer 使用 emptyDir,防止 Pod 重启导致磁盘空间未清理。
  • 如果使用 containerd,请修改路径(如 /var/log/containers 和 /var/lib/containerd)。

🛠️ 4. 部署与验证命令

✅ 部署 DaemonSet

kubectl apply -f fluent-bit-daemonset.yaml

🔍 查看部署状态

# 查看 DaemonSet 状态
kubectl get daemonset -n logging# 查看 Pod 是否在每个节点上部署
kubectl get pods -n logging -o wide# 查看 Pod 日志
kubectl logs -n logging -l name=fluent-bit

🧼 5. 常见问题与排查建议

问题现象 可能原因 解决方案
Pod 无法启动 路径挂载错误 / 权限不足 检查 volumeMounts 与宿主机路径
无法采集日志 ConfigMap 名称不一致 确保 ConfigMap 已正确创建且名称对应
DNS 解析失败 使用 hostNetwork 但 dnsPolicy 错误 使用 ClusterFirstWithHostNet
部分节点未部署 节点调度被排除 检查 affinity、tolerations 配置
时区不一致 宿主机与容器时间不同 使用 /etc/localtime 挂载同步时区

🧭 6. 推荐实践

  • ✅ 与 RBAC、ConfigMap 一起管理,确保权限、配置和运行一致性。
  • 🧰 配合 kubectl rollout restart daemonset 实现滚动更新。
  • 🪄 使用 kubectl label 为节点分组,实现灵活调度。
  • 🧠 定期查看资源使用情况,避免采集任务占用过多 CPU/内存。
  • 🧼 定期清理日志文件夹,防止磁盘占满。

📝 小结

  • 🧱 DaemonSet 是 Fluent Bit 在每个节点上采集日志的基础。
  • 🧭 注意网络、调度、挂载路径、权限的配置匹配。
  • ⚠️ 任何路径或名称不一致都可能导致采集失败。
  • 🧪 通过 kubectl get/logs/describe 等命令可快速定位问题。

是否希望我在下一步给出一份 完整的三步部署流程 shell 脚本,可一键部署 Fluent Bit?(适合生产环境快速上线) 🚀

相关新闻

  • 2025年保洁公司权威推荐榜单:驻场/钟点/开荒/外包/商场/办公楼/工厂/医院/企业保洁服务优选指南
  • 深入解析:Spring Cloud Netflix Eureka:从微服务基础到高可用集群实战
  • 别看我只是一只羊

最新新闻

  • Debian 9 安装 Node.js 实战指南:nvm 方案详解
  • 2026茂名市家里卫生间漏水、阳台漏水、楼顶漏水、阳台漏水、地下室渗水、阳光房漏水各种房屋漏水情况不用愁!本地防水补漏公司为您排忧解难!精准推荐附近专业防水团队 - 伶鹿到家
  • 调优日志 - [日期]
  • GoB插件实践手册:打造Blender与ZBrush高效协同工作流
  • 2026武汉市家里卫生间漏水、阳台漏水、楼顶漏水、阳台漏水、地下室渗水、阳光房漏水各种房屋漏水情况不用愁!本地防水补漏公司为您排忧解难!精准推荐附近专业防水团队 - 伶鹿到家
  • Fortinet高危SQL注入漏洞深度剖析:从原理到防御实战

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号