Remove a node from a cluster or node pool
Remove worker nodes from a node pool or ACK cluster, optionally draining pods and releasing instances.
Use cases
-
Replace an ECS instance: Remove an existing Elastic Compute Service (ECS) instance from a node pool and add a new one.
-
Move a node between node pools: Remove the node from its current node pool, then add it to the target node pool.
-
Change instance configuration or billing method: Remove the node, make the changes in the ECS console, then re-add the node to the node pool.
-
Fix node exceptions: Remove and re-add the node to trigger reinitialization. Back up system disk data first, as this resets the node by replacing the system disk.
-
Manage free nodes: Clusters created before the node pool feature was released may contain free nodes. Remove them or move them into a node pool for centralized management.
-
Control scale-in targets: When scaling in a node pool with manual or auto scale-out enabled, remove specific ECS instances to reduce costs.
Prerequisites
Make sure that:
-
Other nodes in the cluster have sufficient resources to host the evicted pods.
-
Pod affinity rules and scheduling policies allow rescheduling to other nodes.
How it works
When you remove a node in the ACK console, the system runs the following sequence:
-
Drain (if Drain Node is selected): ACK evicts pods to other available nodes, respecting PodDisruptionBudget (PDB) configurations. Pods have up to 30 minutes for graceful shutdown, regardless of
terminationGracePeriodSeconds. If any pod is not terminated within this period, the drain fails, subsequent steps are skipped, and you must retry manually. -
Remove: The node is removed from the cluster or node pool.
-
Release (if Release ECS Instance is selected): The ECS instance and attached data disks are released.
If Expected Nodes is configured, the node pool automatically scales to restore the expected count after removal.
Usage notes
-
Remove nodes from the ACK console. Do not use
kubectl delete node, the ECS console, the Auto Scaling console, or API operations to remove or release ECS instances. -
Renew subscription ECS instances before they expire. An expired or released instance causes the node to stop and be removed from the ACK console.
-
If Expected Nodes is configured, the node pool automatically scales out to maintain the expected count after removal. The lifecycle of system disks and data disks is bound to the node. When a node is released during removal, the attached disks are also released, and all data is permanently deleted and cannot be recovered. To persist data beyond the node lifecycle, use Persistent Volumes (PVs).
Remove nodes from a node pool
Removing a node migrates pods to other nodes, which may cause temporary service interruptions. Back up node data and perform removals during off-peak hours.
-
Log on to the ACK console. In the left-side navigation pane, click ACK consoleClusters.
-
On the Clusters page, click the target cluster. In the left-side navigation pane, choose Nodes > Node Pools.
-
Click the name of the node pool that contains the node. On the Nodes tab, select the nodes to remove and click Batch Remove at the bottom of the page.
-
Configure the removal options:
-
Drain Node: ACK evicts pods to other nodes before removal. Clear only if you have already drained the node.
If your pods require a graceful shutdown period longer than 30 minutes, drain the node manually first, then clear Drain Node before proceeding:
kubectl drain <nodeName> [options]Placeholder
Description
Example
<nodeName>Node name in
<region-id>.<instance-id>formatcn-hangzhou.i-bp1asavedmte377c3****[options]Optional drain flags
--force --ignore-daemonsets --delete-local-dataRun
kubectl drain --helpfor the full list of options. -
Release ECS Instance: If selected, the ECS instance and attached data disks are released. Only pay-as-you-go instances can be released this way. If cleared, the instance remains billed after removal. Subscription instances are automatically released upon expiration. In node pools with Auto Mode enabled, the system automatically manages the node lifecycle, scales nodes based on workload demand, and completely cleans up the underlying ECS resources when nodes are removed. To release a subscription instance before expiration, request a refund or change the billing method to pay-as-you-go and then release it.
-
-
Read the on-screen instructions and complete the removal.
-
Verify that the nodes are removed:
kubectl get nodesThe removed nodes no longer appear in the output.
Remove nodes from a cluster
Removing a node migrates pods to other nodes, which may cause temporary service interruptions. Back up node data and perform removals during off-peak hours.
-
Log on to the ACK console. In the left-side navigation pane, click Clusters.
-
On the Clusters page, click the target cluster. In the left-side navigation pane, choose Nodes > Nodes.
-
Select the nodes to remove and click Batch Remove at the bottom of the page.
-
Configure the removal options:
-
Drain Node: ACK evicts pods to other nodes before removal. Clear only if you have already drained the node.
If your pods require a graceful shutdown period longer than 30 minutes, drain the node manually first, then clear Drain Node before proceeding:
kubectl drain <nodeName> [options]Placeholder
Description
Example
<nodeName>Node name in
<region-id>.<instance-id>formatcn-hangzhou.i-bp1asavedmte377c3****[options]Optional drain flags
--force --ignore-daemonsets --delete-local-dataRun
kubectl drain --helpfor the full list of options. -
Release ECS Instance: If selected, the ECS instance and attached data disks are released. Only pay-as-you-go instances can be released this way. If cleared, the instance remains billed after removal. Subscription instances are automatically released upon expiration. To release a subscription instance before expiration, request a refund or change the billing method to pay-as-you-go and then release it.
-
-
Read the on-screen instructions and complete the removal.
-
Verify that the nodes are removed:
kubectl get nodesThe removed nodes no longer appear in the output.
After removal, you can re-add the node to the cluster.
Troubleshooting
Node removal fails
Node removal typically fails because a pod exceeded the 30-minute graceful shutdown period, or a PodDisruptionBudget (PDB) blocked eviction.
Drain the node manually, then remove it with Drain Node cleared:
kubectl drain <nodeName> --force --ignore-daemonsets --delete-local-data
Replace <nodeName> with the node name in <region-id>.<instance-id> format — for example, cn-hangzhou.i-bp1asavedmte377c3****.
If PDB blocks the drain, update the PDB settings to match your disruption tolerance, then retry.
Next steps
-
Add nodes back to the cluster: Add existing ECS instances to an ACK cluster or automatically add nodes
-
Scale a node pool by adjusting Expected Nodes: Manually scale a node pool
-
Remove nodes via API: RemoveNodePoolNodes and DeleteClusterNodes
-
Reset a node's system disk: Re-initialize a system disk