1、概述
用户希望应用程序始终可用,而开发人员则需要每天多次部署它们的新版本。在 Kubernetes 中,这些是通过滚动更新(Rolling Updates)完成的。 滚动更新 允许通过使用新的实例逐步更新 Pod 实例,零停机进行 Deployment 更新。新的 Pod 将在具有可用资源的节点上进行调度。
2、前提
在上一篇文章中我们,实例操作了在kubernetes1.25中部署nginx1.14并发布
:https://blog.csdn.net/u011837804/article/details/128395432
本篇文章,我们接上篇,部署nginx1.14并且两个副本,效果:
3、应用升级
我们的生产项目,每次发版都希望不停机切不影响正常使用,咱们看看kubernetes怎么实现的。
本次实例为nginx1.14 升级为nginx1.23.0
命令:
# 执行升级
kubectl set image deploy mynginx nginx=nginx:1.23.0
# 查看升级状态
kubectl rollout status deploy mynginx
注意: 咱们看上面实际操作过程升级前是2个pod,这个是正常的因为两个副本嘛,升级中变成3个pod了,这是为啥呢?kubernetes升级应用为了不影响当前正常使用,会在升级中新建一个pod,等到升级的pod完全运行起来后,才会删除旧pod,这样做的好处就是一旦升级失败,也不影响正常使用,升级中,用户无感知。
4、应用回滚
我们在实际生产项目更新后,发现有bug,想回滚到上一个版本 这个是比较常见的场景,我们看看kubernetes怎么操作。
涉及命令:
# 查看 升级历史记录
kubectl rollout history deploy mynginx
# 撤销上一次升级
kubectl rollout undo deploy mynginx
# 按照版本回滚到某一个版本 版本号可以通过 kubectl rollout history deploy mynginx查看
kubectl rollout undo deploy mynginx --to-revision=版本号
# 查看回滚状态
kubectl rollout undo status deploy mynginx
执行回滚上一个版本实例:
执行回滚某一个版本实例: