Kubernetes 的 DaemonSet 是一种特殊的工作负载控制器,它确保所有(或某些特定的)节点上都运行一个 Pod 的副本。当有新节点加入集群时,DaemonSet 会自动在新节点上添加相应的 Pod,当节点从集群中移除时,这些 Pod 也会被垃圾回收。DaemonSet 通常用于运行集群范围内的关键服务,例如日志收集器、监控代理或其他守护进程。
核心特性
- 自动部署:DaemonSet 确保指定的所有节点自动启动其管理的 Pod 副本。
- 自动扩展:当集群中添加新节点时,DaemonSet 会自动在新节点上启动 Pod 副本。
- 集群范围的服务:适用于需要在集群中每个节点上运行的服务,如日志收集和监控。
工作原理
- 定义 DaemonSet:通过 YAML 文件定义 DaemonSet,指定要运行的容器镜像及其配置。
- 创建 DaemonSet:使用
kubectl apply -f daemonset.yaml
命令创建 DaemonSet。Kubernetes 的 API 服务器接收到请求后,DaemonSet 控制器接管并开始部署 Pod。 - 调度 Pod:DaemonSet 控制器会为集群中的每个节点调度一个 Pod,除非节点被标记为不可调度(taint)且 Pod 没有相应的容忍(toleration)。
- 监控节点变化:DaemonSe