DaemonSet 滚动更新是什么
节点级守护进程(日志采集、监控 agent、网络插件)的更新:按 maxUnavailable 控制每次停掉多少节点的实例,逐节点替换。默认策略是 RollingUpdate,默认每次更新一个节点。网络与存储类 DaemonSet 的更新会短暂影响节点网络,属于高风险对象:先在小批量节点验证,并保留回退镜像与操作手册。
基本信息
| 默认策略 | RollingUpdate |
|---|---|
| maxUnavailable | 默认 1(每次更新一个节点) |
| 更新单位 | 按节点替换 Pod |
| 高风险对象 | CNI/网络插件的更新会短暂影响节点网络 |
| 回退 | 保留旧版本镜像与操作手册 |
典型使用场景
- 日志采集升级:逐节点替换,采集不中断
- 监控 agent 更新:控制并发,保留指标连续性
- 网络插件升级:小批量先行验证,再全量推进
- 节点扩容适配:新镜像随节点加入自动生效
- 故障回退:改回旧镜像触发逆向滚动
- 灰度验证:先缩小节点范围验证再放开
更新策略
更新策略
updateStrategy:
type: RollingUpdate # 默认策略
rollingUpdate:
maxUnavailable: 1 # 每次最多 1 个节点不可用
# 更新后观察:kubectl rollout status daemonset/<name>参数读法
| 参数 | 含义 | 注意 |
|---|---|---|
| type | 更新策略 | RollingUpdate 逐节点替换 |
| maxUnavailable | 每批停掉的节点数 | 调大加速但影响面扩大 |
| Pod 模板 | 触发滚动的内容 | 改镜像与配置都会触发 |
| 容忍与污点 | 能否落到目标节点 | 不匹配会停在中途 |
| 回退 | 改回旧模板 | 逆向滚动逐节点恢复 |
网络与存储类 DaemonSet 更新前,先在小批量节点验证并保留回退镜像与操作手册。
观察节奏:maxUnavailable 调大能加速,但网络类组件建议保持小步。
更新卡住的常见原因:新 Pod 调度不上或探针不通过,先看事件与探针。
推进节奏
- 维护窗口:核心网络组件选择业务低峰推进
- 分批验证:临时缩小节点选择范围确认,再放开全集群
版本回退演练:定期在非核心节点验证回退步骤,确认镜像与手册随手可用。