手动升级ACK集群

为避免过期版本集群存在的安全和稳定性风险,保证业务的连贯性,建议您及时升级集群版本。一个ACK集群由控制面和节点池两部分组成。您可以在控制台完成前置检查以及控制面和节点池的升级。

为什么需要升级

ACK保证Kubernetes最新3个次要版本的创建。例如,ACK支持Kubernetes 1.28、1.30、1.31三个版本时,1.26版本不再支持创建,过期补丁版本也不再支持创建。更多关于Kubernetes版本支持信息,请参见Kubernetes版本概览及机制

过期版本集群存在安全隐患和稳定性风险。集群版本过期后,您将无法享受新Kubernetes版本支持的功能特性及缺陷修复,同时无法获得及时有效的技术支持,并面临无法修复功能缺陷和安全漏洞的风险。

建议您及时主动升级集群,以便享用最新的功能特性、缺陷修复和更及时的技术支持。

重要

升级集群时,容器服务ACK会对您的集群进行前置检查,但无法保证检查出所有不兼容的功能配置和API。根据安全责任共担模型,请您通过帮助文档、控制台信息、站内信等渠道关注版本发布情况,并在集群升级时提前了解相应版本的升级注意事项。

注意事项

  • ACK集群的Kubernetes版本需按照支持的版本依次升级,不支持回退。如需多次升级,请在每次升级后观察集群业务是否持续稳定运行,再进行下一次升级。

  • 请查看Kubernetes版本概览及机制及各版本说明了解待升级版本的版本解读、废弃API、升级注意事项等,避免因高版本的功能变更导致业务功能不兼容。

  • 控制面升级不会影响应用的正常运行。升级过程中API Server会滚动重启。如果您的应用强依赖于API Server,需进行重连重试。

  • Kubernetes 1.24不再支持将Docker作为内置容器运行时。集群由1.22升级至1.24及更高版本,需将节点容器运行时从Docker迁移到containerd,请参见将节点容器运行时从Docker迁移到containerd

  • 集群控制面升级将持续5~8分钟。在此期间,请勿操作集群。

关于kubelet和容器运行时升级的注意事项,请参见注意事项

升级说明

升级ACK集群时,包括控制面升级和节点池升级。大致流程如下。

image

升级前准备

确定待升级集群的Kubernetes版本后,仔细阅读待升级版本的ACK版本发布说明,了解升级注意事项,避免升级时潜在的功能不兼容问题。请在业务低峰期执行升级操作。

集群升级中

控制面和节点池升级前,均需通过前置检查,等待所有检查项均已通过或修复完成后,可进入后续的升级操作。

  • 控制面升级

    ACK托管集群ACK Serverless集群

    采用滚动升级的方式。升级控制面组件,包括kube-apiserverkube-controller-managerkube-scheduler

    ACK专有集群

    采用原地升级的方式,以更大程度地保证业务的连贯性,减少数据迁移和配置调整的风险。具体流程如下。

    1. 当ACK检测到您的集群需要进一步升级etcd和Container Runtime时,将依次升级Master节点上的etcd和Container Runtime。

    2. 依次选择Master节点,一次只升级一个Master节点,并展示当前正在升级的Master节点的编号。

    3. 升级Master组件,包括kube-apiserverkube-controller-managerkube-scheduler

    4. 升级Master节点上的kubelet。

  • 节点池升级

    节点池升级包括kubelet和容器运行时的升级。如运行时需从Docker升级为containerd,系统会通过替换系统盘(替盘升级)的方式完成升级,即更换磁盘的同时进行操作系统或应用程序的升级。请提前做好系统盘的备份工作。其他情况下,保持使用原地升级方式。更多信息,请参见升级节点池

    ACK将集群中的节点按照分批策略执行分批升级。

    • 根据节点池依次执行,同一时间只对一个节点池执行升级。

    • 同一个节点池内采用分批升级。第一批升级的节点数为1,后续的批次以2的幂数进行增长。如果暂停后重新恢复升级,依然遵循该分批策略。您可以在节点池升级页面配置每批升级节点的最大数量,推荐设置为10。具体操作,请参见升级节点池

集群升级后

核验集群版本信息,检查节点池运行是否正常,并检查集群业务运行是否正常。

操作步骤

您可以先完成控制面的升级,再升级节点池。升级集群控制面前,请确保集群节点的版本与控制面版本相同。例如,如果您的控制面版本为1.30,节点版本为1.28,则您需将节点升级至1.30后,然后才能将控制面升级至1.31。

1、升级控制面

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,选择目标集群,并在目标集群右侧操作列,选择更多 > 运维管理 > 集群升级

  3. 集群升级页面手动升级操作对象区域,选择可升级的集群版本,选择升级模式仅控制面,然后单击前置检查,提前扫描集群升级可能存在的潜在风险。

    检查完成后,您可以在前置检查结果区域查看检查结果。

    • 结果正常时,升级检查成功,请继续进行集群升级操作。

    • 结果提示异常时,不影响当前集群的运行及集群状态。您可以参见推荐的解决方案进行修复。关于典型修复方案,请参见集群检查项及修复方案

      说明

      Kubernetes 1.20及以后版本的集群升级前检查时,会检查当前版本是否使用了废弃API,检查结果不会影响升级流程,仅作为提示信息。详细内容,请参见废弃API说明

  4. 前置检查通过后,单击开始升级,按照页面提示进行控制面的升级。

    升级过程中,您可以在页面下方查看升级历史。

    升级完成后,请在集群列表查看集群版本,确认升级是否成功。新扩容节点的版本也将遵循控制面版本。

2、升级节点池

控制面升级完成后,请尽快在业务低峰期完成节点池的升级。节点池升级包括节点kubelet和容器运行时的升级。功能介绍、相关注意事项及操作步骤,请参见升级节点池

集群升级常见问题

集群升级会持续多长时间?

ACK托管集群ACK Serverless集群控制面升级时间约为5分钟;ACK专有集群的Master节点需逐个串行升级,每个Master节点升级时间约为8分钟。节点池升级时内部节点分批升级,每批升级时间约为5分钟。

如何处理集群升级失败并提示the aliyun service is not running on the instance?

云助手不可用,导致升级命令下发失败。您可以在启动或停止云助手后,重新执行集群升级操作。具体操作,请参见启动、停止或者卸载云助手Agent

如何处理节点PLEG not healthy?

容器或者容器运行时无响应。请重启节点后重新执行升级。

升级集群时出现invalid object doesn't have additional properties报错怎么办?

集群升级后,需要同步升级本地的kubectl版本。如果未及时升级,在使用本地kubectl的过程中可能会因为与集群API Server版本不同,发生类似invalid object doesn't have additional properties的报错。关于如何安装或升级kubectl,请参见安装kubectl

相关文档