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

镜像名与标签不变时,OpenShift部署是否会更新运行中的Pod?

问题解答

核心结论

默认情况下,你的DeploymentConfig(DC)不会自动识别同标签镜像的内容变更,旧Pod会持续运行,不会触发更新。

原因

OpenShift的DeploymentConfig通过镜像的标签判断是否需要更新Pod,而非镜像的底层哈希值(digest)。当你推送新镜像到Quay但保持相同标签时,DC只会识别到标签未发生变化,不会检查镜像内容是否更新,因此不会触发滚动更新流程。

无需修改标签的解决方法

你不需要每次构建都修改镜像标签,以下几种方式可以触发Pod更新:

  • 强制触发DC滚动更新:在流水线的部署步骤中添加命令,强制DC拉取最新镜像并替换旧Pod:
    oc rollout latest dc/<你的DC名称>
    
  • 使用镜像digest部署:构建完成后获取镜像的唯一哈希值(digest),在DC配置中指定完整的digest路径,示例:
    spec:
      template:
        spec:
          containers:
          - image: quay.io/your-repo/your-image@sha256:abcdef123456...
    
    每次构建后digest都会变化,DC会自动识别到变更并触发更新。
  • 关联OpenShift镜像流:将Quay镜像同步到OpenShift的ImageStream中,给DC配置ImageChangeTrigger。当新镜像推送到Quay后,镜像流会同步更新,自动触发DC的滚动更新。

是否需要修改标签?

不需要强制修改标签,但如果你的场景需要区分版本、便于回滚或追踪镜像,使用唯一标签(比如基于commit哈希、时间戳)会更利于管理。若仅需触发更新,上述方法即可实现无需改标签的自动更新。

内容的提问来源于stack exchange,提问作者Priyanka Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:15:39