天天看点

kubernetes1.25应用升级、回滚

作者:全栈行动派

1、概述

用户希望应用程序始终可用,而开发人员则需要每天多次部署它们的新版本。在 Kubernetes 中,这些是通过滚动更新(Rolling Updates)完成的。 滚动更新 允许通过使用新的实例逐步更新 Pod 实例,零停机进行 Deployment 更新。新的 Pod 将在具有可用资源的节点上进行调度。

2、前提

在上一篇文章中我们,实例操作了在kubernetes1.25中部署nginx1.14并发布

本篇文章,我们接上篇,部署nginx1.14并且两个副本,效果:

kubernetes1.25应用升级、回滚

3、应用升级

我们的生产项目,每次发版都希望不停机切不影响正常使用,咱们看看kubernetes怎么实现的。

本次实例为nginx1.14 升级为nginx1.23.0

命令:

# 执行升级
kubectl set image deploy mynginx nginx=nginx:1.23.0

# 查看升级状态
kubectl rollout status deploy mynginx           
kubernetes1.25应用升级、回滚

注意: 咱们看上面实际操作过程升级前是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
           

执行回滚上一个版本实例:

kubernetes1.25应用升级、回滚

执行回滚某一个版本实例:

kubernetes1.25应用升级、回滚

继续阅读