All Products
Search
Document Center

Container Service for Kubernetes:Virtual node scheduling solutions for ACK clusters

Last Updated:Aug 28, 2026

Compare virtual node scheduling methods for ACK managed clusters and ACK dedicated clusters to match your scheduling scenario.

Common virtual node scheduling scenarios

  1. Schedule pods only to virtual nodes.

  2. Prioritize ECS nodes and fall back to virtual nodes when ECS resources are insufficient.

For an ACK managed cluster (Basic Edition), use the label alibabacloud.com/eci=true for the first scenario. For the second, upgrade to an ACK managed cluster (Pro Edition).

Note

ACK managed clusters (Pro Edition) better serve the second scenario with higher reliability, SLA guarantees, and larger capacity. You can seamlessly migrate from an ACK managed cluster (Basic Edition) to an ACK managed cluster (Pro Edition).

Usage notes

  • The label alibabacloud.com/eci=true has the highest priority and overrides these scheduling methods:

    • Kubernetes native scheduling semantics, such as nodeSelector, affinity and anti-affinity, and pod topology spread constraints

    • ResourcePolicy

    • ElasticResource (Annotation: alibabacloud.com/burst-resource)

  • ElasticWorkload and ElasticResource (Annotation: alibabacloud.com/burst-resource) are not recommended because they are in an inactive development state.

  • The virtual-kubelet-autoscaler component is no longer maintained. Upgrade your ACK managed cluster (Basic Edition) to an ACK managed cluster (Pro Edition) and uninstall this component to free node resources. Use Kubernetes native scheduling semantics to implement spread deployment and affinity-based scheduling for ECI pods across zones.

  • For pods on virtual nodes that use dynamically provisioned disk volumes, WaitForFirstConsumer-type StorageClasses are not supported with these scheduling methods:

    • Using labels: alibabacloud.com/eci=true.

    • Specifying a virtual node with nodeName.

Solution comparison and suggestions on how to select solutions

The following terms are used in the comparison tables:

  • Priority-based scheduling: When a cluster has different node types, configure the scheduling priority. For example, prioritize ECS nodes and fall back to virtual nodes when ECS resources are insufficient.

    Without priority-based scheduling, you cannot assign priorities across node types. For example, the alibabacloud.com/eci=true label schedules pods only to virtual nodes without ECS-first fallback.

  • Strict scheduling policy: Determines whether scheduling rules for different node pool types are hard constraints.

    • A non-strict policy is a soft constraint. For example, the preferredDuringSchedulingIgnoredDuringExecution field of node affinity prioritizes ECS nodes, but pods may still land on virtual nodes due to the node scoring policy.

    • A strict policy is a hard constraint. For example, ResourcePolicy ensures pods are scheduled to ECS nodes when sufficient resources are available.

ACK managed cluster (Pro Edition)

Scheduling method

Typical scenario

Priority-based scheduling

Preferentially scale in ECI pods

Recommended

Related operations

labels: alibabacloud.com/eci=true

Schedules pods only to virtual nodes. You cannot target a specific virtual node.

Not supported

N/A

Recommended

Schedule pods to run on ECI

Kubernetes native scheduling semantics

nodeSelector

With a toleration, schedule pods only to virtual nodes and target a specific virtual node.

Not supported

N/A

Recommended

nodeSelector

Affinity and anti-affinity

Use Taint, Toleration, and NodeAffinity to schedule pods only to ECI, only to ECS, or preferentially to ECS (for example, fall back to virtual nodes when ECS resources are insufficient).

This method also supports (and only supports) scaling in ECI first, then ECS.

Supported (non-strict scheduling policy)

Supported

Recommended

Specify resource allocation for ECS and ECI

Pod topology spread constraints

Spreads pods across zones for high availability and performance.

Not supported

Supported

Recommended

Implement spread deployment and affinity-based scheduling for ECI pods across zones

ResourcePolicy

Important

In v1.20, the scheduler ignores the unschedulability check for virtual nodes. In v1.22 and later, only the taint check is ignored.

To maintain v1.20 behavior, disable the virtual node scheduling capability in the scheduler parameters.

  • Supports priority-based scheduling by node pool. For example, prioritize Node Pool A and fall back to Node Pool B when resources are insufficient.

  • In ECS-ECI co-deployment scenarios, configure scheduling by billing method. For example, prioritize subscription ECS, then pay-as-you-go ECS, then ECI.

    Scale-in follows reverse scheduling order: ECI first, then pay-as-you-go ECS, then subscription ECS.

Supported (strict scheduling policy)

Supported

Recommended

Customize priority-based scheduling for elastic resources

UnitedDeployment

Schedule pods to ECS or virtual nodes based on replica count. For example, use subscription ECS for 10 or fewer replicas, preemptible instances for 11 to 20, and ECI for more than 20.

Supported

Supported

Recommended

UnitedDeployment

Kubernetes native scheduling semantics

nodeSelector

With a toleration, schedule pods only to virtual nodes and target a specific virtual node.

Not supported

Supported

Not recommended

Compared with an ACK managed cluster (Pro Edition), the kube-scheduler in an ACK managed cluster (Basic Edition) and an ACK dedicated cluster cannot perceive underlying inventory during scheduling, which reduces the certainty of successful pod creation.

nodeSelector

Affinity and anti-affinity

Use Taint, Toleration, and NodeAffinity to schedule pods only to ECI, only to ECS, or preferentially to ECS (for example, fall back to virtual nodes when ECS resources are insufficient).

Supported (non-strict scheduling policy)

Supported

Affinity and anti-affinity

Pod topology spread constraints

Spreads pods across zones for high availability and performance.

Not supported

Supported

Pod topology spread constraints

ElasticWorkload

(In inactive development status. We recommend that you use UnitedDeployment.)

Groups and schedules Deployment replicas to ECS nodes or virtual nodes.

Supported

Supported

Not recommended

Schedule pods of elastic workloads to ECI using Elastic Workload (discontinued)

ElasticResource (Annotation: alibabacloud.com/burst-resource)

(In inactive development status)

Only two elastic scheduling policies are supported:

  • Schedule pods to virtual nodes when ECS node resources are insufficient (elastic scheduling policy: eci).

  • Schedule pods to virtual nodes only (elastic scheduling policy: eci_only).

Supported

Supported

Not recommended

Implement ECI-based elastic scheduling using ElasticResource (discontinued)

virtual-kubelet-autoscaler component

(Maintenance has been discontinued)

Only supports scheduling pods to ECS nodes first, and scheduling pods to virtual nodes when ECS node resources are insufficient.

Supported

Supported

Not recommended

None