解释滚动更新的过程,如何通过`kubectl set image`命令触发更新? 版本回滚的命令是什么?如何查看Deployment的更新历史?
Kubernetes滚动更新机制及操作指南
滚动更新过程解析
- Kubernetes通过逐步替换Pod的方式实现无中断更新
- 更新流程:
- 创建新版本ReplicaSet(基于更新后的镜像)
- 逐步增加新Pod数量(默认每次+25%)
- 同步减少旧Pod数量(默认每次-25%)
- 持续此过程直到全部Pod更新完成
- 更新策略参数(通过
maxSurge
和maxUnavailable
控制更新节奏)
触发滚动更新操作
# 通过修改容器镜像触发滚动更新(示例)
kubectl set image deployment/<DEPLOYMENT_NAME> <CONTAINER_NAME>=<NEW_IMAGE>:<TAG># 具体示例(更新nginx容器的镜像到1.19版本)
kubectl set image deployment/nginx-deploy nginx=nginx:1.19
版本回滚操作
# 回滚到上一个版本
kubectl rollout undo deployment/<DEPLOYMENT_NAME># 回滚到指定历史版本(需结合更新历史查看)
kubectl rollout undo deployment/<DEPLOYMENT_NAME> --to-revision=<REVISION_NUMBER>
查看更新历史记录
# 查看Deployment更新历史列表
kubectl rollout history deployment/<DEPLOYMENT_NAME># 查看特定版本的详细配置
kubectl rollout history deployment/<DEPLOYMENT_NAME> --revision=<REVISION_NUMBER>
操作验证命令
# 查看更新进度状态
kubectl rollout status deployment/<DEPLOYMENT_NAME># 查看ReplicaSet创建历史
kubectl get rs
操作注意事项:
- 更新前建议使用
--record
参数记录命令(kubectl set image ... --record
) - 回滚操作会创建新的ReplicaSet,保留完整版本历史
- 可使用
kubectl describe deployment/<DEPLOYMENT_NAME>
查看详细事件日志