如何删除采用Recreate更新策略的OpenShift Deployment?
解决Deployment删除后自动重建的问题
当你删除Deployment后它自动重建,本质是存在更高层级的控制器(比如OpenShift的DeploymentConfig、Operator、持续部署工具等)在管控这个Deployment的生命周期,单纯删除Deployment只会触发控制器重新创建它。针对你的场景,可按以下步骤处理:
1. 定位触发重建的根源
执行命令查看Deployment的关联信息,重点关注Owner References和Events字段,找到管控它的父资源:
kubectl describe deployment workspace036c85e5c44e4207
OpenShift环境中,大概率是DeploymentConfig在管理该Deployment——OpenShift的DeploymentConfig会自动生成并维护对应的Deployment实例。
2. 根据根源执行删除操作
情况1:由DeploymentConfig管控
直接删除对应的DeploymentConfig即可(可通过kubectl get deploymentconfigs查询实际名称):
kubectl delete deploymentconfig <对应DeploymentConfig名称>
该操作会连带删除它管控的Deployment、ReplicaSet和Pod。
情况2:由Operator或持续部署工具(如ArgoCD、Tekton)管控
- 先在对应工具的界面或配置中,移除对该Deployment的管控(比如在ArgoCD中删除关联的Application);
- 再执行删除Deployment的命令:
kubectl delete deployment workspace036c85e5c44e4207
情况3:临时强制删除(仅应急使用)
若暂时无法定位根源,可强制删除Deployment并清理关联的ReplicaSet:
# 级联删除Deployment及关联的ReplicaSet kubectl delete deployment workspace036c85e5c44e4207 --cascade=foreground # 清理残留的ReplicaSet(如有需要) kubectl delete replicaset workspace036c85e5c44e4207-697d66f7c4
补充说明
Deployment的Recreate更新策略仅影响Pod的更新方式(先删除旧Pod再启动新Pod),和删除后自动重建无直接关联——自动重建的核心原因是存在其他资源在管控Deployment的生命周期。
内容的提问来源于stack exchange,提问作者Mohammad Jumah
相关产品推荐
相关产品推荐

