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

118 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 1先看这个 Deployment 对应的 ReplicaSet 列表
```bash
kubectl -n cq-fly-260311 get rs -o wide | grep cmii-sky-converge
```
更稳一点的方式,用 label 过滤:
```bash
kubectl -n cq-fly-260311 get rs -l cmii.app=cmii-sky-converge
```
如果你不确定 label不妨先看 Deployment 的 selector
```bash
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` 里。可以这样查:
```bash
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
```
你会看到类似:
```bash
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][1])
### 3如果只是回滚到“上一个版本”
直接执行:
```bash
kubectl -n cq-fly-260311 rollout undo deployment/cmii-sky-converge
```
这是官方支持的标准写法,会把 Deployment 回滚到上一次部署状态。([Kubernetes][2])
### 4如果你已经从 ReplicaSet 确认了上一个 revision按 revision 回滚
例如上一个版本是 `revision=12`
```bash
kubectl -n cq-fly-260311 rollout undo deployment/cmii-sky-converge --to-revision=12
```
`--to-revision` 就是官方提供的指定修订版本回滚参数。([Kubernetes][2])
### 5回滚前先预览一下
如果你想先试运行:
```bash
kubectl -n cq-fly-260311 rollout undo deployment/cmii-sky-converge --dry-run=server
```
### 6回滚后确认状态
```bash
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
```
---
### 一套可直接执行的命令
如果你就是想“先看上一个版本,再回滚”:
```bash
# 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 的镜像”
可以用这个:
```bash
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 并直接执行回滚。
[1]: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/?utm_source=chatgpt.com "Deployments - Kubernetes"
[2]: https://kubernetes.io/zh-cn/docs/reference/kubectl/generated/kubectl_rollout/kubectl_rollout_undo/?utm_source=chatgpt.com "kubectl rollout undo | Kubernetes"