Remove a node from a cluster or node pool

Updated at:
Copy as MD

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:

  1. 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.

  2. Remove: The node is removed from the cluster or node pool.

  3. 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

Important

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.

  1. Log on to the ACK console. In the left-side navigation pane, click ACK consoleClusters.

  2. On the Clusters page, click the target cluster. In the left-side navigation pane, choose Nodes > Node Pools.

  3. 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.

  4. 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> format

      cn-hangzhou.i-bp1asavedmte377c3****

      [options]

      Optional drain flags

      --force --ignore-daemonsets --delete-local-data

      Run kubectl drain --help for 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.

  5. Read the on-screen instructions and complete the removal.

  6. Verify that the nodes are removed:

    kubectl get nodes

    The removed nodes no longer appear in the output.

Remove nodes from a cluster

Important

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.

  1. Log on to the ACK console. In the left-side navigation pane, click Clusters.

  2. On the Clusters page, click the target cluster. In the left-side navigation pane, choose Nodes > Nodes.

  3. Select the nodes to remove and click Batch Remove at the bottom of the page.

  4. 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> format

      cn-hangzhou.i-bp1asavedmte377c3****

      [options]

      Optional drain flags

      --force --ignore-daemonsets --delete-local-data

      Run kubectl drain --help for 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.

  5. Read the on-screen instructions and complete the removal.

  6. Verify that the nodes are removed:

    kubectl get nodes

    The 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