醋醋百科网

Good Luck To You!

k8s 关于服务器节点维护场景模拟之DaemonSet Pod 作用【第四节】

在Kubernetes中,DaemonSet 是一种特殊的控制器,用于确保在集群中的每个节点(或特定标签的节点)上自动运行且仅运行一个副本的Pod。这种设计使其适用于系统级组件或基础设施服务,具有以下核心作用:

1. 运行集群基础设施组件

DaemonSet最常见的用途是部署必须在每个节点上运行的系统组件,例如:

  • 网络插件:如Flannel、Calico、Weave Net等,负责节点间的Pod网络通信。
  • 存储插件:如GlusterFS、Ceph等的客户端,为节点提供存储卷挂载能力。
  • 节点监控:如Prometheus Node Exporter(收集节点指标)、ELK Filebeat(收集节点日志)。
  • 安全组件:如Falco(容器运行时安全监控)、反病毒软件等。

示例:Kubernetes官方网络插件Flannel通过DaemonSet部署,确保每个节点都有网络代理:

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-flannel-ds
spec:
selector:
matchLabels:
app: flannel
template:
spec:
hostNetwork: true # 直接使用节点网络
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.15.1

2. 自动节点扩展与收缩

当集群添加新节点时,DaemonSet会自动在新节点上部署Pod;当节点被移除时,对应的Pod也会自动清理。这种特性使基础设施服务能与集群规模动态匹配,无需人工干预。

3. 资源隔离与优化

通过DaemonSet部署的组件通常需要访问节点的底层资源(如网络栈、文件系统),可通过以下方式实现:

  • hostNetwork:直接使用节点网络(如Flannel)。
  • hostPID/hostIPC:访问节点的进程空间或IPC(如某些监控工具)。
  • hostPath挂载:读写节点文件系统(如日志收集器)。

示例:Node Exporter通过挂载节点文件系统收集硬件和系统指标:

volumes:
- name: proc
hostPath:
path: /proc
- name: sys
hostPath:
path: /sys

4. 节点级别的系统服务

某些服务需要在每个节点上独立运行,例如:

  • 节点级别负载均衡:如MetalLB(裸机环境的负载均衡器)。
  • 节点自动修复:如Node Problem Detector(检测节点硬件/系统问题)。
  • 节点预热:如缓存预热工具,在应用部署前提前加载数据到节点。

5. 与其他控制器的对比

控制器类型

部署模式

适用场景

DaemonSet

每个节点(或匹配标签的节点)1个副本

系统组件、网络/存储插件、监控

Deployment

副本数由用户指定,分散在集群中

无状态应用(如Web服务器)

StatefulSet

固定ID、有序部署、持久化存储

有状态应用(如数据库)

Job/CronJob

一次性或定时任务,完成后退出

批处理任务、定时任务

总结

DaemonSet的核心价值在于自动化节点级别的服务部署,确保关键组件与集群节点生命周期同步。通过合理使用DaemonSet,可大幅降低集群运维成本,提升基础设施的可靠性和可扩展性。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言