CKAD-CN 考试知识点分享(8) 升级与回滚
您必须连接到正确的主机。不这样做可能导致零分。
[candidate@base] $ ssh ckad00015
任务目标
在 namespace: ckad00015
中,对名为 webapp
的 Deployment 执行以下操作:
- 更新滚动升级策略:
maxSurge
: 5%maxUnavailable
: 5%
- 更新容器镜像为
lfccncf/nginx:1.13.7
- 将 Deployment 回滚至前一版本
步骤一:编辑 Deployment 配置滚动更新策略
使用以下命令编辑 Deployment:
kubectl -n ckad00015 edit deployment webapp
在 spec.strategy.rollingUpdate
字段中配置 maxSurge
和 maxUnavailable
。
⚠️ 注意:如果该字段不存在,需要手动添加;且
replicas
数量会影响百分比计算(例如,若副本数为 20,则 5% = 1 个 Pod)。
✅ 修改内容如下:
spec:strategy:type: RollingUpdaterollingUpdate:maxSurge: 5%maxUnavailable: 5%
保存并退出编辑器。
🔁 此操作本身不会触发滚动更新,仅更新策略配置。
步骤二:更新容器镜像以触发滚动升级
在同一编辑界面或通过命令行,将容器镜像更新为 lfccncf/nginx:1.13.7
。
修改容器镜像:
spec:template:spec:containers:- name: nginx # 实际名称根据 YAML 而定image: lfccncf/nginx:1.13.7
✅ 保存后,Kubernetes 将自动触发滚动更新,使用新的镜像创建 Pod,并按照上面设置的 5%/5%
策略进行替换。
步骤三:验证更新是否开始
查看滚动更新状态:
kubectl -n ckad00015 rollout status deployment webapp
输出示例:
Waiting for deployment "webapp" rollout to finish: 1 out of 2 new replicas have been updated...
deployment "webapp" successfully rolled out
步骤四:回滚到前一个版本
题目要求“回滚至前一版本”,即撤销刚刚应用的 lfccncf/nginx:1.13.7
镜像变更,恢复到之前的镜像。
执行回滚命令:
kubectl -n ckad00015 rollout undo deployment webapp
✅
rollout undo
会将 Deployment 恢复到上一个历史版本(revision)。
查看回滚状态
kubectl -n ckad00015 rollout status deployment webapp
确认回滚完成后,Pod 应重新使用旧版镜像运行。
查看历史版本
如需查看所有历史版本:
kubectl -n ckad00015 rollout history deployment webapp
输出示例:
REVISION CHANGE-CAUSE
1 <none>
2 kubectl set image deployment/webapp ...
3 kubectl set image deployment/webapp ... (current)
回滚后,当前版本变为 REVISION=2
。
总结
步骤 | 操作 | 是否完成 |
---|---|---|
1 | 设置 maxSurge=5% , maxUnavailable=5% | ✅ |
2 | 更新镜像为 lfccncf/nginx:1.13.7 | ✅(用于触发更新) |
3 | 回滚到前一版本 | ✅ 使用 rollout undo 成功回退 |
✅ 注意:虽然最终回滚到了旧镜像,但 滚动更新策略(maxSurge/maxUnavailable)的修改会被保留,这是持久性配置。
✅ 任务全部完成。