Compare virtual node scheduling methods for ACK managed clusters and ACK dedicated clusters to match your scheduling scenario.
Common virtual node scheduling scenarios
-
Schedule pods only to virtual nodes.
-
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).
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=truehas 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=truelabel 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: |
Schedules pods only to virtual nodes. You cannot target a specific virtual node. |
Not supported |
N/A |
Recommended |
||
|
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 |
|
|
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 |
||
|
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. |
|
Supported (strict scheduling policy) |
Supported |
Recommended |
||
|
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 |
||
|
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. |
|
|
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 |
|||
|
Pod topology spread constraints |
Spreads pods across zones for high availability and performance. |
Not supported |
Supported |
|||
|
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: (In inactive development status) |
Only two elastic scheduling policies are supported:
|
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 |
|