为避免过期版本集群存在的安全和稳定性风险,获得最新的Kubernetes能力和技术支持,建议您及时升级集群版本。ACK提供升级前置检查,支持配置不同升级策略和升级节奏,并提供升级进度监控,以便实现集群的平滑升级。
为什么需要升级
ACK保证Kubernetes最新3个次要版本的创建。例如,ACK支持Kubernetes 1.31、1.32、1.33三个版本时,1.30版本不再支持创建,过期补丁版本也不再支持创建,详情请参见版本说明。
过期版本集群存在安全隐患和稳定性风险。集群版本过期后,将无法享受新Kubernetes版本支持的功能特性及缺陷修复,无法获得及时有效的技术支持,面临无法修复安全漏洞的风险。
建议您及时主动升级集群,以便获取最新的功能特性、缺陷修复和更及时的技术支持。
升级集群时,ACK会对您的集群进行前置检查,但无法保证检查出所有不兼容的功能配置和API。根据安全责任共担模型,请您通过帮助文档、控制台信息、站内信等渠道关注版本发布情况,并在集群升级时提前了解相应版本的升级注意事项。
升级影响
ACK提供分阶段、分批次的升级策略,确保集群升级过程中业务的连续性和稳定性。
配置项 | 说明 |
前置检查 | 前置检查可以识别集群中潜在的兼容性风险,例如废弃API、组件版本、节点状态、磁盘状态等,并提供修复建议。前置检查结果不会影响集群业务的运行。 |
控制面升级 | 正常情况下不影响应用的正常运行。应用强依赖于API Server时可能因短暂断连而需要重连重试。
耗时:ACK托管集群、ACK Serverless集群由ACK托管升级,约5分钟;ACK专有集群的Master节点需逐一串行升级,每个节点约8分钟。 |
节点池升级 | 分批升级节点,确保服务连续性。支持自定义批量升级策略(每批次执行最多节点数、每批次间隔时间等),控制升级对业务的影响。
耗时:取决于节点分批情况。原地升级每批次约5~10分钟;替盘升级(不涉及快照)约8分钟,具体时长受排水情况影响;如需创建快照,升级需等待快照结束后执行,快照创建时间受数据量影响。 |
升级流程
ACK集群升级包括控制面升级和节点池升级,请先执行前置检查后执行升级,建议在业务低峰期操作。控制面升级完成后,请仔细检查集群运行情况,然后选择是否继续升级节点池。
1. 升级前准备
根据ACK版本说明确定待升级的版本,了解升级注意事项、重大变更、功能弃用情况等,避免升级后功能不兼容。
自1.31版本起,ACK从仅支持偶数次要版本(如1.28、1.30)扩展至支持所有次要版本,且支持周期调整为1年。
规划集群维护窗口,可提前执行升级前置检查识别潜在风险,并在业务低峰期执行升级操作。
明确升级期间禁止操作。
请勿进行业务发布、变更、扩缩容操作。API Server重启期间,新建Pod可能无法分配IP。
请勿手动修改集群中负载均衡的配置,等待集群自动同步。
请勿手动修改节点的kubelet、containerd等系统文件。
2. 控制面升级
发起前置检查:执行升级前请发起前置检查,等待所有检查项均已通过或修复完成后再执行升级。
检查项包括废弃API(自1.20版本起)、组件兼容性、功能配置兼容性、集群状态、控制面组件状态等。
执行升级:前置检查通过后,执行升级。
ACK托管集群、ACK Serverless集群:ACK托管升级,升级控制面组件,包括kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy。
ACK专有集群:采用原地升级,以更大程度地保证业务的连贯性,减少数据迁移和配置调整的风险。
升级后检查:检查集群版本、核心组件运行状态、业务应用运行状态、Pod创建、节点添加等是否正常。
(可选)当集群版本为1.30或更高时,ACK托管集群控制面支持的最高版本可以比集群中所有节点中最低的 kubelet 版本高 2 个次要版本(Minor Version)。例如,所有节点中最低的 kubelet 版本为1.30时,控制面最高可升级至1.32。
3. 节点池升级
节点池升级包括kubelet和容器运行时的升级。
发起前置检查:执行升级前发起前置检查,等待所有检查项均已通过或修复完成后再执行升级。
检查项包括节点状态、系统资源、磁盘状态、网络环境等。
配置升级策略并执行升级:选择升级方式(原地升级或替盘升级),配置批量升级策略(每批次执行最多节点数、是否自动创建快照等)。
如果控制面领先节点kubelet 2个次要版本,节点kubelet将会跨版本升级到与控制面相同的版本。
升级后检查:检查kubelet和容器运行时版本、Pod调度、业务应用运行状态等是否正常。
4. 其他流程
升级注意事项
升级方式
原地升级和替盘升级
控制面升级时,ACK托管集群、ACK Serverless集群由ACK托管升级;ACK专有集群采用原地升级。
节点池升级时,ACK提供原地升级和替盘升级两种方式。
原地升级:直接在现有节点上进行升级,无需替换节点系统盘或重新初始化节点,原节点数据不受影响。节点IP、磁盘挂载等ECS实例相关配置保持不变,而ACK管理的组件配置(如containerd、kubelet等)可能会根据组件版本差异进行相应调整。
如需自定义containerd或kubelet配置,请参见自定义节点池kubelet配置、自定义节点池containerd配置实现。
替盘升级:通过替换系统盘的方式升级,节点会重新初始化。节点IP、数据盘挂载等ECS实例相关的配置不发生改变,但系统盘上的数据将被删除。需提前做好系统盘的备份工作,建议开启磁盘快照。
额外挂载到该节点上的数据盘不受影响。
替盘升级后,ECS实例的默认登录密码将失效。可重置密码。
特殊场景说明
以下场景必须使用替盘升级:
自1.24版本起不再支持将Docker作为内置容器运行时,需将容器运行时从Docker迁移至containerd。
详见将节点容器运行时从Docker迁移到containerd。
更换操作系统类型,例如自1.30版本起不再支持CentOS和Alibaba Cloud Linux 2,可转而使用其他支持中的操作系统。
详见更换操作系统。
升级Windows节点池时,需通过替盘的方式进行升级。
此外,您也可以新建节点池进行轮转升级:创建新节点池并配置目标环境,通过设置老节点池为不可调度或更新负载调度方式逐步迁移应用至新节点池,最后下线旧节点池。新旧节点池共存期间会产生对应费用。
常见问题
如何手动升级我的集群?
升级集群时有哪些推荐做法?
集群升级需要多长时间?
我能不能不升级集群版本,永远停留在一个版本?
ACK支持跨多个版本升级吗?
我的集群版本很老了,如何快速升级我的集群版本?
1.22版本的集群升级至1.24时需要切换Docker至containerd,如何操作?
ACK如何保证集群升级的稳定性?
集群升级有哪些注意事项?
强制升级会影响我的业务吗?
过期版本的集群还能正常使用吗?
集群升级后支持版本回退吗?
同时需要升级集群和迁移集群至ACK托管集群Pro版,应该先执行哪个?
前置检查提示废弃API怎么办?
前置检查提示组件版本过低怎么办?
组件升级有顺序要求吗?
升级过程中节点出现告警是否正常?
vSwitch可用IP为0时能否升级?
如何处理集群升级失败并提示the aliyun service is not running on the instance?
如何处理节点PLEG not healthy?
升级集群时出现
invalid object doesn't have additional properties报错怎么办?