To avoid potential security and stability risks from outdated cluster versions and to access the features in the latest releases, we recommend promptly upgrading your cluster following the version release schedule of the Container Service for Kubernetes (ACK) Edge cluster. Upgrading edge nodes is a crucial part of the cluster upgrade process and requires manual execution. This topic describes the steps to manually upgrade an edge node.
Prerequisites
The control plane of the cluster has been updated. For more information about how to update the cluster control plane, see Upgrade an ACK Edge cluster.
Limits
ACK Edge clusters support upgrades between versions 1.18 to 1.24. To upgrade from version 1.26 to 1.30, submit a ticket to contact the Container Service team. Upgrades to other versions are not supported.
When you upgrade an ACK Edge cluster, you can upgrade from the current Kubernetes version only to the subsequent version. For example, to upgrade the Kubernetes version of an ACK Edge cluster from 1.18 to 1.22, you must first upgrade to version 1.20, then to version 1.22.
During the upgrade of edge nodes, we recommend that you use a phased upgrade, limiting the process to no more than 20 nodes per batch.
In an ACK Edge cluster, edge nodes and the control plane can differ by at most two minor versions. For example, if the control plane runs Kubernetes version 1.22, the edge nodes must run at least Kubernetes version 1.20. We recommend that you maintain consistent versions between the control plane and edge nodes.
The following steps apply to the edge node upgrades. For information about how to upgrade cloud nodes, see Upgrade an on-cloud node pool.
Procedure
To upgrade the Kubernetes version of an ACK Edge cluster to 1.24, you must change the container runtime from Docker to containerd if the cluster includes nodes that use the Docker runtime. Kubernetes 1.24 does not support the Docker runtime. You can complete the update by using the following methods.
(Recommended) Create a new node pool that uses the containerd runtime and perform rolling migration: Create a new node pool, set the runtime to containerd, and expand the number of nodes. Gradually migrate all applications to the new node pool by setting the old node pool to unschedulable or by changing the node pool scheduling method specified in the workloads (use labels), and then take the old node pool offline. For information about how to create a node pool, see Edge node pool management. For information about how to set a node to unschedulable, see Node draining and scheduling status.
In-place update: Change the runtime of the node from containerd to Docker. Drain the node before the update. All containers on the node will restart during the update.
Drain the node.
Run the following command on all nodes one at a time in the edge node pool:
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}
The following table describes the parameters.
Parameter
Description
Example
TARGET_CLUSTER_VERSION
The new Kubernetes version.
Set the value to the Kubernetes version of the updated control plane.
1.24.6-aliyunedge.1
For more information about the Kubernetes versions supported by ACK Edge clusters, see Release notes for supported Kubernetes versions.
REGION
The region ID of the cluster.
cn-hangzhou
For more information about the regions supported by ACK Edge clusters, see Supported regions.
INTERCONNECT_MODE
The network type of connections to the node.
basic: public network.
private: Express Connect circuits.
basic
The following output indicates that the node is updated.
Run the following command on all nodes one at a time in the edge node pool:
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}
The following table describes the parameters.
Parameter | Description | Example |
TARGET_CLUSTER_VERSION | The new Kubernetes version. Set the value to the Kubernetes version of the updated control plane. | 1.24.6-aliyunedge.1 For more information about the Kubernetes versions supported by ACK Edge clusters, see Release notes for supported Kubernetes versions. |
REGION | The region ID of the cluster. | cn-hangzhou For more information about the regions supported by ACK Edge clusters, see Supported regions. |
INTERCONNECT_MODE | The network type of connections to the node.
| basic |
The following output indicates that the node is updated.
FAQ
What do I do if edge node upgrades fail?
After you upgrade an edge node pool, if the message This node has been upgraded successfully
is not returned, troubleshoot by referring to the solutions in What do I do if an edge node fails to be upgraded when I upgrade an ACK Edge cluster?
References
Remove edge nodes if they are no longer needed.
To maintain service continuity during cloud-edge network disconnections, configure edge node autonomy.