为避免过期版本集群存在的安全和稳定性风险,获得最新的Kubernetes能力和技术支持,建议您及时升级集群版本。ACK提供升级前置检查,支持配置不同升级策略和升级节奏,并提供升级进度监控,以便实现集群的平滑升级。
为什么需要升级
ACK保证Kubernetes最新3个次要版本的创建。例如,ACK支持Kubernetes 1.31、1.32、1.33三个版本时,1.30版本不再支持创建,过期补丁版本也不再支持创建,详情请参见ACK版本发布说明。
过期版本集群存在安全隐患和稳定性风险。集群版本过期后,将无法享受新Kubernetes版本支持的功能特性及缺陷修复,无法获得及时有效的技术支持,面临无法修复安全漏洞的风险。
建议您及时主动升级集群,以便享用最新的功能特性、缺陷修复和更及时的技术支持。
升级集群时,ACK会对您的集群进行前置检查,但无法保证检查出所有不兼容的功能配置和API。根据安全责任共担模型,请您通过帮助文档、控制台信息、站内信等渠道关注版本发布情况,并在集群升级时提前了解相应版本的升级注意事项。
升级影响
ACK提供分阶段、分批次的升级策略,确保集群升级过程中业务Pod的连续性和稳定性。
前置检查:控制面和节点池升级前均提供前置检查,识别集群中潜在的兼容性风险,例如废弃API、组件版本、节点状态、磁盘状态等,并提供修复建议。前置检查结果不会影响集群业务的运行。
控制面:
ACK托管集群:API Server由ACK托管运行,升级过程中会滚动重启,正常情况下不影响应用的正常运行。当应用强依赖于API Server时可能因短暂断链而需要重连重试。
ACK专有集群:升级过程中,ACK会对每个Master节点逐个进行原地升级。正常情况下不影响应用的正常运行。当应用强依赖于API Server时可能因短暂断链而需要重连重试。
节点池:分批升级节点,确保服务连续性。支持自定义批量升级策略(每批次执行最多节点数、每批次间隔时间等),控制升级对业务的影响。
原地升级时,不涉及磁盘替换和节点初始化,业务Pod正常运行,服务不会中断。
替盘升级时,涉及节点排水、系统盘更换和节点初始化。但请注意以下影响:
升级流程
ACK集群升级包括控制面升级和节点池升级,请先执行前置检查后执行升级,建议在业务低峰期操作。控制面升级完成后,请仔细检查集群运行情况,然后继续升级节点池,保持与控制面版本一致。
1. 升级前准备
根据ACK版本发布说明确定待升级的版本。ACK目前仅支持逐级升级版本,不支持跨多个版本升级,且不支持回退版本。
仔细阅读待升级版本的版本说明文档,了解升级注意事项、重大变更、功能弃用情况等,避免升级后功能不兼容。
规划集群维护窗口,可提前执行升级前置检查识别潜在风险,并在业务低峰期执行升级操作。
2. 控制面升级
发起前置检查:执行升级前请发起前置检查,等待所有检查项均已通过或修复完成后再执行升级。
检查项包括废弃API(自1.20版本起)、组件兼容性、功能配置兼容性、集群状态、控制面组件状态等。
执行升级:前置检查通过后,执行升级。
ACK托管集群、ACK Serverless集群:ACK托管升级,升级控制面组件,包括kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy。
ACK专有集群:采用原地升级,以更大程度地保证业务的连贯性,减少数据迁移和配置调整的风险。
升级后检查:检查集群版本、核心组件运行状态、业务应用运行状态、Pod创建、节点添加等是否正常。
3. 节点池升级
节点池升级包括kubelet和容器运行时的升级。
发起前置检查:执行升级前请发起前置检查,等待所有检查项均已通过或修复完成后再执行升级。
检查项包括节点状态、系统资源、磁盘状态、网络环境等。
配置升级策略并执行升级:选择升级方式(原地升级或替盘升级),配置批量升级策略(包括每批次执行最多节点数、是否自动创建快照等)。
升级后检查:检查kubelet和容器运行时版本、Pod调度、业务应用运行状态等是否正常。
4. 其他流程
升级注意事项
升级方式
原地升级和替盘升级
控制面升级时,ACK托管集群、ACK Serverless集群由ACK托管升级;ACK专有集群采用原地升级。
节点池升级时,ACK提供原地升级和替盘升级两种方式。
原地升级:直接在现有节点上进行升级,无需替换节点系统盘或重新初始化节点,原节点数据不受影响。节点IP、磁盘挂载等ECS实例相关配置保持不变,而ACK管理的组件配置(如containerd、kubelet等)可能会根据组件版本差异进行相应调整。
如需自定义containerd或kubelet配置,请参见自定义节点池kubelet配置、自定义节点池containerd配置实现。
替盘升级:通过替换系统盘的方式升级,节点会重新初始化。节点IP、数据盘挂载等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怎么办?
前置检查提示组件版本过低怎么办?
如何处理集群升级失败并提示the aliyun service is not running on the instance?
如何处理节点PLEG not healthy?
升级集群时出现
invalid object doesn't have additional properties
报错怎么办?