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

Kubernetes 1.14中如何重启Deployment下所有Pod?

Kubernetes 1.14 重启 Deployment 所有 Pod 的解决方案

由于 kubectl rollout restart 在 1.15 版本才正式引入,针对 1.14 版本可以用以下几种可靠方法触发 Pod 重建:

方法一:更新 Pod 模板注解触发滚动更新

这是最平滑的方式,会严格遵循 Deployment 的滚动更新策略,避免服务中断(前提是 Deployment 配置了合理的滚动参数)。

执行命令(替换占位符):

kubectl patch deployment <你的Deployment名称> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt":"'$(date +%Y-%m-%dT%H:%M:%S%z)'"} }}}}'

原理:Kubernetes 会监控 spec.template 的哈希值变化,更新注解会改变模板哈希,从而触发滚动更新,逐个重建 Pod。

方法二:修改 Pod 模板的镜像配置

通过给镜像标签添加临时后缀(即使使用原镜像),触发 Deployment 更新:

执行命令(替换容器名、镜像信息):

kubectl set image deployment/<你的Deployment名称> <容器名称>=<镜像名>:<原标签>-$(date +%s) --record

也可以用 patch 命令直接修改镜像字段:

kubectl patch deployment <你的Deployment名称> -p '{"spec":{"template":{"spec":{"containers":[{"name":"<容器名称>","image":"<镜像名>:<原标签>'$(date +%s)'"}]}}}}'

原理:镜像标签的修改会改变 spec.template 内容,触发滚动更新。后续若需恢复原标签,重新执行一次设置原镜像的命令即可。

方法三:直接删除 Pod 让 Deployment 重建

适合对服务中断容忍度较高的场景,删除后 Deployment 会自动创建新 Pod:

执行命令(替换 Deployment 的标签选择器,比如 app=my-app):

kubectl delete pods -l app=my-app

注意:此方法会一次性删除所有匹配 Pod,若副本数不足或无就绪探针,可能导致短暂服务不可用。

内容的提问来源于stack exchange,提问作者Aim Better

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 08:16:02