首页 新闻 会员 周边

DaemonSet 控制器是什么

0
[已关闭问题] 关闭于 2026-06-11 07:34

它的核心作用是确保集群中所有(或指定的)节点上,都运行且仅运行一个 Pod 副本DaemonSet 限制的是 “某一个特定的任务” 只有一个副本,而不是说 “整个节点只能跑一个 Pod” DaemonSet 管理的都是节点级(Node-level)的基础设施服务

  1. 自动伴随节点增减:当有新的 Node 节点加入集群时,DaemonSet 会自动在该新节点上创建一个 Pod;反之,如果某个节点从集群中移除或被删除,它也会自动回收该节点上的 Pod。
  2. 单节点单副本:与普通 Deployment 在集群内随机分布固定数量的 Pod 不同,DaemonSet 严格遵循“每个节点最多运行一个实例”的原则,避免资源浪费和功能冲突。
  3. 高可用与自动恢复:如果某个节点宕机或重启,DaemonSet 控制器会监控到这一状态,并在节点恢复后自动重新创建 Pod,保证服务的连续性。
  4. 滚动更新:当你更新了 DaemonSet 的配置(例如升级了镜像版本),它会像 Deployment 一样支持滚动更新,逐台替换各个节点上的旧 Pod。
DaemonSet 专为需要在整个集群中全局运行的后台任务而设计,最典型的场景包括:
  • 日志收集:如 FluentdLogstash 或 Filebeat。它们需要收集所在节点上的本地日志文件,并统一转发到中央日志平台。
  • 节点监控:如 Prometheus Node Exporter。它们负责采集当前节点的硬件指标(CPU、内存、网络等)供监控系统抓取。
  • 网络插件代理:如你之前排查的 Calico-node 或 Flannel。它们必须在每个节点上运行,以处理容器网络的底层路由和通信规则。
  • 存储守护进程:如 Glusterd 或 Ceph。它们负责在节点上挂载远程存储目录和操作容器的 Volume。

 

  • 以 Prometheus Node Exporter 为例:它的作用是采集所在服务器的 CPU、内存、磁盘 IO 等硬件指标。一台物理机上的硬件状态,只需要一个进程就能全部读取完并暴露出接口。如果在同一台机器上跑 3 个 Node Exporter,不仅浪费资源,还会导致端口冲突。
  • 以 Filebeat (日志收集) 为例:它负责监听 /var/log/containers/ 目录下的本地日志文件。一个 Filebeat 进程就足以处理这台机器上所有的容器日志了,多开几个毫无意义。
  • 以 calico-node 为例:它负责配置这台机器上的底层网络路由规则(如 iptables)。一个守护进程就能接管整台机器的网络流量转发。
所以,DaemonSet 的设计哲学就是:
虽然“某一个 DaemonSet”在每个节点只有一个 Pod,但你的节点上通常会同时运行很多种不同的 DaemonSet
假设你的节点上部署了完整的 K8s 生态,那么这一个节点上可能会同时存在:
  • 1 个 Calico 网络 Pod (calico-node)
  • 1 个 kube-proxy 网络代理 Pod
  • 1 个 Prometheus 监控 Pod (node-exporter)
  • 1 个 Fluentd 日志收集 Pod
  • 还有无数个属于 Deployment 的业务应用 Pod...
*Tesla*的主页 *Tesla* | 小虾三级 | 园豆:1802
提问于:2026-06-11 06:48
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册