You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

kubectl rollout restart能否作用于DaemonSet并实现容器镜像更新?

结论
  • 执行kubectl rollout restart操作可以达成重启时自动拉取最新版本镜像的目标,该操作在你的场景下是否为最优方案取决于你使用的镜像Tag规则。

原理说明

kubectl rollout restart daemonset <DaemonSet名称>的本质是触发DaemonSet的滚动更新流程:

  1. 命令会自动给DaemonSet的Pod模板新增一个kubectl.kubernetes.io/restartedAt annotation,触发Pod模板版本变更
  2. DaemonSet控制器会按照配置的滚动更新策略,逐节点销毁旧Pod,使用新的Pod模板重建Pod
  3. 由于你已经将容器的imagePullPolicy设置为Always,Kubelet在创建新Pod时会主动向镜像仓库校验当前镜像Tag对应的最新digest,拉取最新版本的镜像启动容器

方案适用性说明

适用场景

如果你的镜像使用可变Tag(比如latest、dev这类每次构建都会覆盖更新的Tag),kubectl rollout restart是该场景下的常用正确方案,操作简单无需修改镜像配置。

更优替代场景

如果你的镜像使用不可变Tag(比如每次构建生成唯一的版本Tag,如v1.2.3、build-20240520-a1b2c3),更规范的方案是直接修改DaemonSet的容器镜像配置,命令参考:

kubectl set image daemonset <DaemonSet名称> <容器名称>=<新镜像地址:新Tag>

该方式可以明确控制镜像版本,避免镜像仓库Tag意外更新导致的非预期版本拉取,版本可追溯性更强。


验证建议

重启完成后可以通过以下方式确认镜像已更新为最新版本:

  • 查看Pod事件确认拉取行为:kubectl describe pod <Pod名称> | grep -A5 Events
  • 对比实际运行镜像的digest和镜像仓库最新版本的digest:kubectl get pod <Pod名称> -o jsonpath='{.spec.containers[*].imageID}'

内容的提问来源于stack exchange,提问作者Azad Md Abul Kalam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:39:02