Kubernetes社区每4个月左右发布一个次要版本(minor version),容器服务 Kubernetes 版会跟随上游的发版节奏进行Kubernetes版本的迭代,包括版本的创建、维护以及停止维护。本文介绍ACK的Kubernetes版本支持机制,包括版本发布和支持情况、版本生命周期说明、版本支持策略等。
版本发布
版本号说明
ACK Kubernetes版本的表达方式为x.y.z-aliyun.n。x.y.z表示社区Kubernetes版本,其中,x表示主要版本(major version),y表示次要版本(minor version),z表示补丁版本(patch version);n表示阿里云补丁版本(ACK patch version)。
版本生命周期
在Kubernetes社区发布新的次要(minor version)版本后,ACK会对该版本进行风险评估和一致性测试,通常在社区发布补丁版本两周内开放新版本的创建和升级。
在Kubernetes社区针对次要版本发布新的补丁版本后,ACK会根据补丁所修复问题的风险等级判定是否发布该补丁版本的升级更新。对于高危安全漏洞的补丁版本,ACK通常在24小时内完成评估验证,而后开放新版本的创建和升级。
版本支持策略
集群创建
ACK支持创建最近的三个Kubernetes次要版本的集群。例如,最近的三个次要版本为1.31、1.30、1.28。当ACK发布支持1.31版本时,1.26版本即将停止维护并不再开放创建功能,过期补丁版本也不再开放创建功能。
当某个次要版本发布了新的补丁版本后,低版本的补丁版本不再开放创建功能。例如,1.30.7发布后,1.30.1不再支持新建。
集群升级
版本升级功能目前仅支持逐级升级版本,不支持跨多个版本升级,且不支持回退版本。例如,如果您的ACK集群Kubernetes版本为1.28,期望升级至1.31,则需进行两次集群升级,即先升级到1.30,再升级到1.31。
对于补丁版本,集群升级仅支持最新补丁版本的升级,不支持过期补丁版本的升级。
技术支持
对于ACK仍在维护的版本,ACK提供的技术支持包括答疑、在线指导、排查、排错等工作。
过期版本的风险
过期版本集群存在安全隐患和稳定性风险。集群版本过期后,将无法享受新Kubernetes版本支持的功能特性及缺陷修复,无法获得及时有效的技术支持,面临无法修复安全漏洞的风险。
您需要升级集群到安全稳定的版本。
过期版本的强制升级
Kubernetes社区对于超出维护期限(通常是1年)的版本不披露CVE风险且不提供修复补丁,过期版本的潜在安全风险可能无法被及时发现和修复。由于ACK集群主要采用托管架构,这些安全风险不仅会对您的集群产生影响,也可能会影响阿里云的整体安全。因此,ACK不允许集群长期处于过期状态,会采取强制升级方式将集群升级至安全稳定的版本。
集群版本过期后,ACK不会立即进行强制升级,建议手动升级集群到安全稳定版本。执行强制升级操作前,ACK会至少提前一个月通过短信、邮件、站内信等方式通知。
强制升级集群版本时,会升级如下内容:
升级组件(只会升级与更高集群版本存在兼容性问题的部分组件)。
升级集群控制面。
升级节点池和节点。
针对以下情况,不会进行强制升级,需手动升级:
集群类型为ACK专有集群。建议迁移至ACK集群Pro版,请参见热迁移ACK专有集群至ACK集群Pro版。
集群版本为1.22且使用Docker容器运行。需迁移至containerd运行时,请参见将节点容器运行时从Docker迁移到containerd。
使用的ACK Nginx Ingress组件版本较老,与高版本ACK存在兼容性问题。组件说明请参见组件变更记录Nginx Ingress Controller。
常见问题
我能不能不升级集群版本,永远停留在一个版本?
不能。过期版本的潜在安全风险不仅会对您的集群产生影响,也可能会影响阿里云的整体安全。ACK不允许集群长期处于过期状态,会采取强制升级方式将集群升级至安全稳定的版本。
请及时升级集群版本(手动升级集群),以便享受ACK提供的最新功能特性和更好的技术支持。升级前,请参见版本发布说明了解各版本的特性变更和注意事项。推荐您启用自动升级集群功能,保持集群的周期性自动升级。
如果有特殊情况,请提交工单。
我的集群版本很老了,如何快速升级我的集群版本?
您可以通过以下两种方案来实现。
方案一:逐级升级版本。每次升级后,请观察集群业务是否持续稳定运行,再进行下一次升级。具体操作,请参见手动升级集群。
方案二:新建一个最新版本的集群,将集群应用逐步迁移至新集群,再下线老集群。关于如何创建并配置集群,请参见创建ACK托管集群。
ACK支持跨多个版本升级吗?
ACK不支持跨次要版本升级,您需要逐级升级版本。此外,升级集群控制面前,请确保集群节点的版本与控制面版本相同。
1.22版本的集群升级至1.24时需要切换Docker至containerd,如何操作?
ACK在1.24及更高版本中不再支持将Docker作为内置容器运行时,您需要将节点容器运行时从Docker迁移到containerd。
方案一:轮转节点。通过新建节点池(新建节点池时选择containerd运行时),然后通过应用负载重新发布,指定节点池调度的方式,逐步把应用全部迁移到新的节点池,旧的节点池再做下线处理。
方案二:替盘升级。该方案需要替换节点的系统盘,请勿在系统盘中保存重要数据,或提前做好备份工作,数据盘在升级过程中则不受影响。
下文介绍的升级内容,均为替盘升级的方案说明和操作方法。
具体操作,请参见将节点容器运行时从Docker迁移到containerd。
ACK如何保证集群升级的稳定性?
一个ACK集群由控制面和节点池两部分组成。
控制面升级:ACK提供升级前的前置检查功能,对废弃API、组件兼容性、功能配置兼容性、控制面组件等进行检查。检查结果不影响集群中业务的正常运行。如检查结果异常,可参见控制台获取修复建议。更多信息,请参见手动升级集群。
节点池升级:节点池升级包括kubelet和containerd的升级。ACK提供升级前的前置检查功能,检查节点状态、系统资源、磁盘状态、网络环境等。检查结果不影响集群中业务的正常运行。如检查结果异常,可参见控制台获取修复建议。
您也可以自行配置升级策略,例如通过指定待升级节点、设置每批次可升级的最大节点数、配置升级暂停策略等配置控制升级节奏。如节点系统盘上有重要业务数据,也可以在升级节点池前为节点创建快照。更多信息,请参见升级节点池。
集群升级有哪些注意事项?
相关文档
关于ACK支持的操作系统类型及镜像版本,请参见操作系统镜像发布记录。
关于ACK提供的CVE漏洞修复说明及对应解决方案,请参见CVE漏洞修复。
关于集群升级前置检查的检查项和废弃API说明,请参见集群检查项及修复方案。