Remove a node from a cluster or node pool
Remove worker nodes with options to drain pods first and release underlying ECS instances.
Always remove nodes through the ACK console. Running kubectl delete node bypasses the removal workflow and leaves the ECS instance in an inconsistent state.
Use cases
Remove a node when you need to:
-
Retire an unmanaged node — Old clusters created before node pool support may have unmanaged worker nodes. Remove the node, then add it to an existing node pool for centralized management.
-
Replace an ECS instance — Add the new ECS instance to the node pool first, then remove the old one.
-
Scale in a node pool — Remove a specific ECS instance from a node pool with manual or automatic scaling to reduce costs.
-
Migrate a node between node pools — Remove the node from the source node pool and add it to the destination node pool.
-
Resize an ECS instance — Remove the node, change the instance type in the ECS console, then add the node back.
-
Change the billing method — Remove the node, change the billing method from pay-as-you-go to subscription in the ECS console, then add the node back.
-
Re-initialize an abnormal node — Remove the node and add it back to reset the system disk.
WarningRe-initializing a node replaces its system disk. Back up data on the system disk before proceeding.
What happens when you remove a node
When you remove a node, ACK performs these steps:
-
Drains the node (if Drain Node is selected) — ACK evicts all pods to other available nodes before removal. This prevents service interruptions but requires sufficient capacity on remaining nodes.
-
Removes the node from the cluster — If the node pool has an Expected Nodes count, ACK automatically adjusts it.
-
Releases the ECS instance (if Release ECS Instance is selected) — ACK releases the ECS instance and its data disks. This action is permanent.
Review the two removal options before you start:
| Option | When to select | Effect if not selected |
|---|---|---|
| Drain Node | Always, unless already drained manually | Pods are not evicted before removal, which may disrupt services |
| Release ECS Instance | When you no longer need the ECS instance | The ECS instance continues running and billing; you manage it manually |
Usage notes
-
Do not release nodes or remove instances in the ECS console, Auto Scaling (ESS) console, or their APIs. Do not let subscription instances auto-release on expiration. These actions stop the node and remove it from the ACK console. If the node pool has an Expected Nodes count, ACK scales out to replace the removed instance.
-
Back up data before removing a node. Pod migration during removal may affect running services.
-
Verify that node affinity and scheduling policies allow rescheduling to other nodes.
-
Data disk and system disk data is permanently lost when a node is released. To persist data beyond the node lifecycle, use a PersistentVolume (PV).
Drain node details
The default graceful termination timeout during a node drain is 30 minutes, even if a pod's terminationGracePeriodSeconds is set longer (for example, 40 minutes). If a pod does not terminate within 30 minutes, ACK forcibly terminates it, the drain fails, and node removal stops. To retry, restart the operation in the console.
If your pods require a longer termination period, manually drain the node first:
kubectl drain <nodeName> [options]
| Placeholder | Description | Example |
|---|---|---|
<nodeName> |
Name of the node to drain | cn-hangzhou.10.126.XX.XX |
[options] |
Optional flags | --force --ignore-daemonsets --delete-local-data |
Run kubectl drain --help for the full list of options.
After all pods are evicted, clear Drain Node and remove the node.
Pod Disruption Budget (PDB): The drain respects PDB rules in your cluster. If a PDB prevents eviction, the drain fails. Review and adjust relevant PDB rules before draining.
Release ECS instance details
-
Only pay-as-you-go ECS instances and their data disks can be released immediately.
-
Subscription ECS instances are released automatically when the subscription expires. For early release, request a refund or convert the billing method to pay-as-you-go first.
-
For smart hosting node pools, ACK manages the node lifecycle automatically based on workload. Removing a node removes the underlying ECS resources.
Remove a node from a node pool
-
Log on to the ACK console. In the left navigation pane, click Clusters.
-
On the Clusters page, click the cluster name. In the left navigation pane, choose Nodes > Node Pools.
-
Click the name of the target node pool, then go to the Nodes tab.
-
Remove the node:
-
Single node: In the Actions column, choose More > Remove for the target node.

-
Multiple nodes: Select the target nodes and click Batch Remove.

-
-
In the dialog, select Drain Node and Release ECS Instance as needed, then confirm.

Remove a node from a cluster
-
Log on to the ACK console. In the left navigation pane, click Clusters.
-
On the Clusters page, click the cluster name. In the left navigation pane, choose Nodes > Nodes.
-
On the Nodes page, remove the node:
-
Single node: In the Actions column, choose More > Remove for the target node.

-
Multiple nodes: Select the target nodes and click Batch Remove.

-
-
In the dialog, select Drain Node and Release ECS Instance as needed, then confirm.

Troubleshooting
Node removal fails
Node removal typically fails due to the graceful termination timeout or a PDB blocking eviction. To resolve, manually drain the node first:
kubectl drain <nodeName> [options]
| Placeholder | Description | Example |
|---|---|---|
<nodeName> |
Name of the node to drain | cn-hangzhou.10.126.XX.XX |
[options] |
Optional flags | --force --ignore-daemonsets --delete-local-data |
After all pods are evicted, remove the node with Drain Node unchecked.
Next steps
-
To add a node back to the cluster or node pool, see Add existing nodes.
-
To remove nodes programmatically, see RemoveNodePoolNodes and DeleteClusterNodes.
-
To migrate unmanaged nodes to a node pool, see Migrate unmanaged nodes to a node pool.
-
To manually adjust node pool size using Expected Nodes, see Manually scale a node pool.
-
To re-initialize a system disk after re-adding a node, see Re-initialize a system disk.