为避免过期版本集群潜在的安全性和稳定性风险,同时享有新集群版本的新功能,建议您随ACK Edge集群的版本发布节奏及时升级集群。ACK Edge集群采用原地升级方式进行升级,本文为您介绍ACK Edge集群升级的注意事项、升级流程和操作。
为什么需要升级集群版本
降低安全和稳定性风险:新版本修复发现的安全和稳定性漏洞,长期使用过期版本集群会给业务带来安全和稳定性风险。
享受更好的维护支持:对于过期版本,ACK Edge集群不再提供安全补丁和问题修复,也无法保证过期版本的技术支持质量。使用新版本能够让您享受更好的技术支持和答疑服务。
使用新版本的新功能:ACK Edge集群发布的新版本包含新的功能和改进,为您带来更好的开发和运维体验。
注意事项
ACK Edge集群支持的升级范围为1.18到1.24版本,且只能按照支持的版本依次升级,不支持跨版本升级,不支持回退。
例如,从1.18版本升级到1.22版本,需要进行两次升级操作,先从1.18升级到1.20版本,再从1.20升级到1.22版本。
目前已支持从集群版本1.26开始的升级。若您升级范围为1.26到1.30版本,请提交工单开通白名单。
边缘节点池和控制面最多只能相差两个次要版本,例如控制面为1.22版本,边缘节点池最低是1.20版本,否则会导致集群异常。
升级流程、方式及所需时间
升级流程
升级前准备
集群升级中
控制面和云端节点池升级前,均需通过前置检查,等待所有检查项均已通过或修复完成后,可进入后续的升级操作。
升级所需时间
ACK Edge集群控制面升级时间约为5分钟。
云端节点池升级时内部节点分批升级,每批升级时间约为5分钟。
边缘节点池需要由您手动执行命令完成升级操作,操作时间和节点池下的节点数量有关。
集群升级后
核验集群版本信息,检查节点池运行是否正常,并检查集群业务运行是否正常。
操作步骤
步骤一:升级控制面
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在集群升级页面选择可升级的目标版本,然后单击前置检查,提前扫描集群升级可能存在的潜在风险。
检查完成后,您可以在前置检查结果区域查看检查结果。
结果正常时,升级检查成功,请继续进行集群升级操作。
结果提示异常时,不影响当前集群的运行及集群状态。您可以参见推荐的解决方案进行修复。关于典型修复方案,请参见集群检查项及修复方案。
Kubernetes 1.20及以后版本的集群升级前检查时,会检查当前版本是否使用了废弃API,检查结果不会影响升级流程,仅作为提示信息。详细内容,请参见废弃API说明。
前置检查通过后,单击立即升级,按照页面提示进行控制面的升级。
升级过程中,您可以在页面右上角查看升级历史。
升级完成后,请在集群列表查看集群版本,确认升级是否成功。新扩容节点的版本也将遵循控制面版本。
步骤二:升级云端节点池
控制面升级完成后,请尽快在业务低峰期完成云端节点池的升级。云端节点池升级包括节点kubelet和容器运行时的升级。功能介绍、相关注意事项及操作步骤,请参见云端节点池升级。
步骤三:升级边缘节点池
升级边缘节点池之前必须保证控制面已升级完成。
边缘集群节点池下的所有边缘节点都升级成功,边缘节点池才算升级完成。
升级ACK Edge集群至1.24版本,若其中包含使用Docker运行时的节点时,您需要将容器运行时从Docker迁移到containerd,因为1.24版本的Kubernetes已经不支持Docker运行时。您可以通过以下任一方式完成升级操作。
(推荐)新建containerd节点池轮转迁移:新建一个节点池,运行时选择containerd,扩容节点。通过设置老节点池禁止调度或者更新应用负载指定节点池调度的方式(例如Label),逐步将应用全部迁移至新的节点池,再将旧节点池进行下线处理。关于如何创建节点池,请参见边缘节点池管理;关于如何将节点设置为不可调度,请参见节点排水和调度状态。
原地升级:直接将节点上的运行时从containerd切换到Docker,在升级前也要进行节点排水,另外升级会导致节点上所有容器重启。
节点排水。
在待升级边缘节点池下的所有边缘节点上,依次执行如下命令,完成所有边缘节点的升级。
export REGION="" INTERCONNECT_MODE="" TARGET_CLUSTER_VERSION=""; export ARCH=$(uname -m | awk '{print ($1 == "x86_64") ? "amd64" : (($1 == "aarch64") ? "arm64" : "amd64")}') INTERNAL=$( [ "$INTERCONNECT_MODE" = "private" ] && echo "-internal" || echo "" ); wget http://aliacs-k8s-${REGION}.oss-${REGION}${INTERNAL}.aliyuncs.com/public/pkg/run/attach/${TARGET_CLUSTER_VERSION}/${ARCH}/edgeadm -O edgeadm; chmod u+x edgeadm;./edgeadm upgrade --interconnect-mode=${INTERCONNECT_MODE} --region=${REGION}
参数说明如下:
参数
说明
示例值
TARGET_CLUSTER_VERSION
指定要升级到的目标集群版本。
升级的目标集群版本就是控制面升级完成后的版本。
1.24.6-aliyunedge.1
ACK Edge集群发布的版本和具体版本号,请参见版本发布说明。
REGION
指定集群所在地域的Region ID。
cn-hangzhou
ACK Edge集群支持的地域及其Region ID,请参见开服地域。
INTERCONNECT_MODE
指定节点接入的网络类型。
basic:公网接入。
private:专线接入。
basic
返回如下执行结果,则说明当前边缘节点升级成功。
在待升级边缘节点池下的所有边缘节点上,依次执行如下命令,完成所有边缘节点的升级。
export REGION="" INTERCONNECT_MODE="" TARGET_CLUSTER_VERSION=""; export ARCH=$(uname -m | awk '{print ($1 == "x86_64") ? "amd64" : (($1 == "aarch64") ? "arm64" : "amd64")}') INTERNAL=$( [ "$INTERCONNECT_MODE" = "private" ] && echo "-internal" || echo "" ); wget http://aliacs-k8s-${REGION}.oss-${REGION}${INTERNAL}.aliyuncs.com/public/pkg/run/attach/${TARGET_CLUSTER_VERSION}/${ARCH}/edgeadm -O edgeadm; chmod u+x edgeadm;./edgeadm upgrade --interconnect-mode=${INTERCONNECT_MODE} --region=${REGION}
参数说明如下:
参数 | 说明 | 示例值 |
TARGET_CLUSTER_VERSION | 指定要升级到的目标集群版本。 升级的目标集群版本就是控制面升级完成后的版本。 | 1.24.6-aliyunedge.1 ACK Edge集群发布的版本和具体版本号,请参见版本发布说明。 |
REGION | 指定集群所在地域的Region ID。 | cn-hangzhou ACK Edge集群支持的地域及其Region ID,请参见开服地域。 |
INTERCONNECT_MODE | 指定节点接入的网络类型。
| basic |
返回如下执行结果,则说明当前边缘节点升级成功。
升级常见问题
若一直不升级,后台是否会强制完成自动升级?
不会,ACK Edge集群目前只支持手动升级,若您一直不升级,将一直使用旧版本。建议您及时升级以获得更完整的功能特性和技术支持。
边缘节点升级失败如何处理?
升级边缘节点池时,若未返回升级成功结果This node has been upgraded successfully
,请参见如何处理边缘节点升级失败的问题?排查原因。
相关文档
在执行升级前置检查时,若检查结果异常,可参考集群检查项及修复方案排查异常原因。
- 本页导读 (1)
- 为什么需要升级集群版本
- 注意事项
- 升级流程、方式及所需时间
- 升级流程
- 操作步骤
- 步骤一:升级控制面
- 步骤二:升级云端节点池
- 步骤三:升级边缘节点池
- 升级常见问题
- 若一直不升级,后台是否会强制完成自动升级?
- 边缘节点升级失败如何处理?
- 相关文档