当前位置: 首页 > news >正文

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

🚀 第三步:部署 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
部分节点未部署 节点调度被排除 检查 affinitytolerations 配置
时区不一致 宿主机与容器时间不同 使用 /etc/localtime 挂载同步时区

🧭 6. 推荐实践

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

📝 小结

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

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

http://www.hskmm.com/?act=detail&tid=34416

相关文章:

  • 2025年保洁公司权威推荐榜单:驻场/钟点/开荒/外包/商场/办公楼/工厂/医院/企业保洁服务优选指南
  • 2025年电源适配器厂家推荐排行榜,电脑/手机/平板电源适配器,高品质充电解决方案!
  • 解题报告-洛谷SCP2025T2 P14254 分割(divide)
  • 深入解析:Spring Cloud Netflix Eureka:从微服务基础到高可用集群实战
  • 2025.10.19——1绿1蓝
  • 别看我只是一只羊
  • 10.19 —— (VP)2022icpc西安
  • 2025年储罐源头厂家推荐排行榜,钢衬塑/钢塑复合/化工/防腐/PE/盐酸/硫酸/聚丙烯/不锈钢/次氯酸钠储罐公司精选!
  • 26-wsl-nginx-chinese-encoding-fix
  • win10-减少广告的三个操作
  • java方法
  • 变量名越怪,JVM 越快?
  • 深入解析:CPU调度算法简记
  • 2025年TYPE-C母座厂家推荐排行榜,防水/板上/沉板/立插/立贴/侧插/立式/插座/接口/插头/5A大电流/高速/TID认证公司精选
  • 在AI技术唾手可得的时代,挖掘用户真实需求成为制胜关键——某知名系统工具需求探索
  • 2025年通风气楼/通风天窗厂家推荐排行榜,圆拱型/电动/一字型/钢结构/流线型/屋顶自然/三角型/排烟/采光/启闭式/薄型/成品/消防联动/工厂/屋面/开敞式/启闭式排烟/通风设备公司推荐!
  • 科技领域导师制度与因果分析方法解析
  • 比赛与好题记录(2025 9-10)
  • 全面详解 C++std::vector用法指南
  • Visual Studio Code 初步配置指南(Windows端)
  • 2025年UV光源厂家推荐排行榜,UV面光源,UV LED点光源,UV LED面光源,UV LED固化机公司精选
  • 课上积极回答加分
  • 022304105叶骋恺数据采集第一次作业
  • 智能预加载:基于用户行为和路由预测
  • 函数简单传入参数的汇编分析 - 指南
  • 数据类型转换以及内存溢出
  • 美股数据接口对接指南:快速获取指数实时行情
  • 25-deepin-linux-wsl-nginx-installation
  • 2025国际冷链运输推荐腾翼搏时,专业温控保障生物药品安全!
  • 鸿蒙设备开发-gpio控制