k8s(五)deployment 控制升级和回滚
deployment 控制升级和回滚
Deployment 中可以管理pod 和 ReplicaSets 的更新功能。
当我们的服务需要升级的时候,通过dockerFile 创建好新的升级包的镜像后。
修改deploy pod 模板中的镜像版本号,完成整个部署的滚动升级。
每次升级会有一个升级记录,通过记录可以执行回滚到某个版本。
deploy 更新
- 目前已有一个nginx部署实例

目前的nginx版本号是 1.14.2
- 目前要升级nginx版本 1.19
1 | kubectl set image deploy/nginx-deployment nginx=nginx:1.19 --record |
或者也可以直接编辑deploy 配置文件
- 可以看到pod正在变化中,完成pod的升级过程

- 查看更新上线状态
1 |
|
pod 如何滚动更新
会发现当修改了镜像信息后,pod是逐步进行更新的,是滚动更新的。
- 当更新了deploy后,会创建一个新的ReplicaSet。并将旧的rs 的副本数减少到1.
通过命令 kubectl get rs 也可以看到新生成的rs
- 最终当新的rs 执行到指定的副本数量的时候,旧的rs 缩减到0,完成滚动更新。
pod 的回滚
通过命令
1 |
|

可以看到更新的历史信息,有的有命令行显示有的没有是以为 在执行更新命令的时候有没有加 –record 参数的原因
查看某个版本的更新信息
1 | kubectl rollout history deployment/nginx-deployment --revision=12 |
回滚到上一个版本
1 | kubectl rollout undo deploy/nginx-deployment |

回滚到指定版本
1 | kubectl rollout undo deployment.v1.apps/nginx-deployment --to-revision=12 |
暂停deploy
为了可能做多个更新操作而不每次都触发自动更新,可以先暂停deploy,再做一系列修改,最后恢复deploy
核心命令其实就2个
暂停
1 | kubectl rollout pause deployment/nginx-deployment |
恢复
1 | kubectl rollout resume deployment/nginx-deployment |
手动扩缩容
手动扩缩容可以指定数量或百分比的方式进行扩缩容;
手动指定副本数量
1 | kubectl scale --replicas=3 deploy/xx |
自动扩缩容
k8s 支持使用 Horizontal Pod Autoscaler(HPA)完成水平扩缩容操作。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment


