0

0

什么是 Kubernetes 的 DaemonSet,如何用于日志收集?

幻夢星雲

幻夢星雲

发布时间:2025-10-20 12:50:01

|

444人浏览过

|

来源于php中文网

原创

DaemonSet确保每个节点运行一个Pod副本,适合日志收集;通过挂载宿主机日志目录并部署Fluent Bit,实现自动采集、添加上下文信息并发送至Elasticsearch,构建全覆盖、透明化的日志系统。

什么是 kubernetes 的 daemonset,如何用于日志收集?

Kubernetes 的 DaemonSet 是一种控制器,确保集群中的每个(或部分)节点都运行一个 Pod 的副本。每当有新节点加入集群,DaemonSet 会自动在该节点上启动一个对应的 Pod;当节点被移除时,这些 Pod 也会被清理。这种“一节点一Pod”的特性,使 DaemonSet 非常适合运行集群级别的后台服务,比如日志收集、监控代理或网络插件。

DaemonSet 的核心特点

DaemonSet 确保指定的 Pod 在所有符合条件的节点上运行,不会被调度器重新分配或分散。它通过以下机制工作:

  • 每个节点只运行一个 Pod 副本
  • 支持节点选择器(nodeSelector)和污点容忍(tolerations),可控制在哪些节点上部署
  • 自动响应节点的增减,保持覆盖一致性

使用 DaemonSet 进行日志收集

在 Kubernetes 中,容器产生的日志默认写入节点的本地文件系统。为了集中管理和分析,需要从每个节点收集日志并发送到统一的日志后端(如 Elasticsearch、Fluentd、Kafka 或 Loki)。DaemonSet 是实现这一目标的理想方式。

以常见的日志收集组件 Fluent Bit 为例,部署流程如下:

Facetune
Facetune

一款在线照片和视频编辑工具,允许用户创建AI头像

下载
  • 定义一个 DaemonSet,其模板中包含运行 Fluent Bit 容器的 Pod
  • 将节点上的日志目录(如 /var/log/containers)挂载到 Pod 中
  • 配置 Fluent Bit 解析容器日志,并转发到 Elasticsearch 或其他目标
  • 通过标签或污点控制是否在特定节点(如 master 节点)部署

这样,每个节点都会运行一个 Fluent Bit 实例,实时读取本节点上所有容器的日志,完成采集和上报,形成完整的日志管道。

实际应用场景示例

假设你使用 EFK(Elasticsearch + Fluentd/Fluent Bit + Kibana)架构做日志管理:
  • 通过 DaemonSet 部署 Fluent Bit,确保每台工作节点都有一个采集代理
  • Fluent Bit 监听容器运行时生成的日志文件(通常软链接至 /var/log/pods)
  • 添加上下文信息(如 Pod 名称、命名空间、标签)到日志条目
  • 将结构化日志发送到 Elasticsearch 存储,供 Kibana 查询展示

这种方式无需修改应用代码,对业务透明,且具备良好的扩展性和容错性。

基本上就这些。DaemonSet 让日志收集变得自动化和全覆盖,是构建可观测性体系的基础组件之一。不复杂但容易忽略的是权限设置和路径挂载的准确性,需确保 Pod 能读取宿主机日志目录。

相关专题

更多
kafka消费者组有什么作用
kafka消费者组有什么作用

kafka消费者组的作用:1、负载均衡;2、容错性;3、广播模式;4、灵活性;5、自动故障转移和领导者选举;6、动态扩展性;7、顺序保证;8、数据压缩;9、事务性支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

167

2024.01.12

kafka消费组的作用是什么
kafka消费组的作用是什么

kafka消费组的作用:1、负载均衡;2、容错性;3、灵活性;4、高可用性;5、扩展性;6、顺序保证;7、数据压缩;8、事务性支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

149

2024.02.23

rabbitmq和kafka有什么区别
rabbitmq和kafka有什么区别

rabbitmq和kafka的区别:1、语言与平台;2、消息传递模型;3、可靠性;4、性能与吞吐量;5、集群与负载均衡;6、消费模型;7、用途与场景;8、社区与生态系统;9、监控与管理;10、其他特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

202

2024.02.23

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

27

2025.12.22

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

37

2025.12.13

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

58

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

57

2026.01.23

yy漫画官方登录入口地址合集
yy漫画官方登录入口地址合集

本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

237

2026.01.23

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

393

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 6.8万人学习

前端基础到实战(HTML5+CSS3+ES6+NPM)
前端基础到实战(HTML5+CSS3+ES6+NPM)

共162课时 | 19万人学习

第二十二期_前端开发
第二十二期_前端开发

共119课时 | 12.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号