企业中大型项目使用Kubernetes(k8s) 进行平滑升级或回退的4种方式,附图文详细说明。
如果项目已经使用 Kubernetes 一段时间了,则可能需要考虑计划定期升级。从 Kubernetes 1.19 开始,每个开源版本都提供一年的补丁。你需要升级到最新的可用次要版本或补丁版本才能获得安全性和错误修复。但是,如何在不停机的情况下升级基础架构的关键部分呢?本文将指导你了解在任何环境中升级 Kubernetes 时要考虑的常见模式。
如果你使用的是集群管理工具或托管 Kubernetes 服务,你应该查阅你的文档以获得最适合你环境的选项。你还需要注意,某些工作负载和环境可能会限制你选择的升级策略。
我们将讨论集群升级的一些高级模式:
原地升级
蓝绿升级
滚动升级
金丝雀升级
这些模式类似于应用程序升级选项,但由于其潜在的影响可能需要考虑一些独特的因素。升级基础设施可能会产生相当大的成本,具体取决于升级需要多长时间以及你的规模有多大。
控制平面组件
Kubernetes 控制平面由 Kubernetes API Server、etcd 数据库、controller manager,、scheduler以及你的环境中可能拥有的任何其他控制器(例如云或ingress )组成。升级 API Server是升级集群的第一步。Kubernetes 将状态存储在 etcd 中,并且随着任何重大应用程序升级,你需要确保至少有一个备份,并且你已经验证可以恢复备份。在某些情况下,API Server升级可能还需要 etcd 升级。
数据平面组件
Kubernetes 数据平面由 kubelet、容器运行时以及你在集群工作负载中使用的任何网络、日志记录或存储驱动程序组成。对于许多集群,至少需要 kube-proxy 和 CNI 插件更新