k8sDaemonSet控制器
DaemonSet用于再集群中的全部节点上同时运行一份指定的pod资源副本,后续新加入的工作节点也会自动创建一个相关的pod对象,当从集群中移除节点时,此类pod对象也将被自动回收而无须重建。也可以使用节点选择器及节点标签指定仅在部分具有特定特征的节点上运行指定的pod对象。通常运行那些执行系统级操作任务的应用,具体如下:
1、运行集群存储的守护进程,如在各个节点上运行glusterfs或ceph
2、在各个节点上运行日志收集守护进程,如fluentd和logstash
3、在各个节点上运行监控系统的代理守护进程,如Prometheus Node Exporter、collectd、Datadog agent、New Relic agent或Ganlia gmond等
一、创建DaemonSet资源对象
spec字段中嵌套使用的字段同样主要包含pod控制器资源支持的selector、template和minReadySeconds,并且功能和用法基本相同,但不支持使用replicas。
apiVersion: apps/v1 kind: DaemonSet metadata: name: filebeat-ds labels: app: filebeat spec: selector: matchLabels: app: filebeat template: metadata: labels: app:filebeat name: filebeat spec: containers: - name: filebeat image: ikubernetes/filebeat:5.6.5-alpine env: - name: REDIS_HOST value: db.linux.io:6379 - name: LOG_LEVEL value: info
通过清单文件创建DaemonSet资源的命令:kubectl apply -f filebeat.yaml
二、更新DaemonSet对象
DaemonSet同样支持更新机制,相关配置定义在spec.updateStrategy嵌套字段中。目前,支持RollingUpdate(滚动更新)和OnDelete(删除时更新)两种策略,滚动更新为默认策略,工作逻辑类似于deploy,不过仅支持使用maxUnavailable属性定义最大不可用Pod资源副本数,默认为1,而删除时更新的方式则是在删除相应节点的pod资源后重建并更新为新版本。默认的滚动更新策略是一次删除一个工作节点上的pod资源,待其新版本pod资源重建完成后再开始操作另一个工作节点上的pod资源。也可以使用minReadySeconds字段控制滚动更新节奏,必要时可以执行暂停和继续操作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通