Files
CmiiDeploy/998-常用脚本/更新脚本/新更新脚本.md
2026-05-19 14:28:44 +08:00

3.8 KiB
Raw Blame History

1先看这个 Deployment 对应的 ReplicaSet 列表

kubectl -n cq-fly-260311 get rs -o wide | grep cmii-sky-converge

更稳一点的方式,用 label 过滤:

kubectl -n cq-fly-260311 get rs -l cmii.app=cmii-sky-converge

如果你不确定 label不妨先看 Deployment 的 selector

kubectl -n cq-fly-260311 get deploy cmii-sky-converge -o jsonpath='{.spec.selector.matchLabels}'
echo

2从 ReplicaSet 里看 revision 和镜像

Deployment 的 revision 一般记录在 ReplicaSet 注解 deployment.kubernetes.io/revision 里。可以这样查:

kubectl -n cq-fly-260311 get rs \
  -o custom-columns=NAME:.metadata.name,REVISION:.metadata.annotations.deployment\.kubernetes\.io/revision,REPLICAS:.spec.replicas,IMAGE:.spec.template.spec.containers[*].image \
  | grep cmii-sky-converge

你会看到类似:

cmii-sky-converge-6f7c8d9b4d   12   0   repo/app:v1.2.2
cmii-sky-converge-7a8b9c0d1e   13   2   repo/app:v1.2.3

这里通常:

  • 最大的 revision 是当前版本
  • 倒数第二大的 revision 就是上一个版本 这些历史配置是保存在 ReplicaSet 中的。(Kubernetes)

3如果只是回滚到“上一个版本”

直接执行:

kubectl -n cq-fly-260311 rollout undo deployment/cmii-sky-converge

这是官方支持的标准写法,会把 Deployment 回滚到上一次部署状态。(Kubernetes)

4如果你已经从 ReplicaSet 确认了上一个 revision按 revision 回滚

例如上一个版本是 revision=12

kubectl -n cq-fly-260311 rollout undo deployment/cmii-sky-converge --to-revision=12

--to-revision 就是官方提供的指定修订版本回滚参数。(Kubernetes)

5回滚前先预览一下

如果你想先试运行:

kubectl -n cq-fly-260311 rollout undo deployment/cmii-sky-converge --dry-run=server

6回滚后确认状态

kubectl -n cq-fly-260311 rollout status deployment/cmii-sky-converge
kubectl -n cq-fly-260311 get deploy cmii-sky-converge -o wide
kubectl -n cq-fly-260311 get rs \
  -o custom-columns=NAME:.metadata.name,REVISION:.metadata.annotations.deployment\.kubernetes\.io/revision,REPLICAS:.spec.replicas,IMAGE:.spec.template.spec.containers[*].image \
  | grep cmii-sky-converge

一套可直接执行的命令

如果你就是想“先看上一个版本,再回滚”:

# 1. 查看当前 deployment 的历史对应的 ReplicaSet 和镜像
kubectl -n cq-fly-260311 get rs \
  -o custom-columns=NAME:.metadata.name,REVISION:.metadata.annotations.deployment\.kubernetes\.io/revision,REPLICAS:.spec.replicas,IMAGE:.spec.template.spec.containers[*].image \
  | grep cmii-sky-converge | sort -k2 -n

# 2. 回滚到上一个版本
kubectl -n cq-fly-260311 rollout undo deployment/cmii-sky-converge

# 3. 查看回滚结果
kubectl -n cq-fly-260311 rollout status deployment/cmii-sky-converge

如果你想精确拿到“上一个 ReplicaSet 的镜像”

可以用这个:

kubectl -n cq-fly-260311 get rs \
  -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.annotations.deployment\.kubernetes\.io/revision}{"\t"}{.spec.template.spec.containers[*].image}{"\n"}{end}' \
  | grep cmii-sky-converge | sort -k2 -n

然后选倒数第二行,就是上一个版本的 revision 和镜像。

你要的话,我可以再给你一版 一行 shell 命令,自动找出 cmii-sky-converge 的上一个 revision 并直接执行回滚。