When pods are distributed across virtual nodes without affinity or topology constraints, they may be concentrated in a single zone, increasing cross-zone network latency and reducing availability during zone failures. Enabling the virtual node-based pod scheduling policy lets pods use Kubernetes-native scheduling rules—pod affinity, node affinity, and inter-region topology spreading—when being assigned to virtual nodes.
Prerequisites
Before you begin, make sure you have:
-
An ACK Pro cluster running Kubernetes 1.22 or later. See Create an ACK managed cluster and Update an ACK cluster
Before enabling this policy
Scheduling failure risks
Review the following before enabling the policy. Some affinity configurations can prevent pods from being scheduled:
| Configuration | Risk |
|---|---|
| Pod anti-affinity | Pods with pod anti-affinity rules may fail to be scheduled |
| Virtual node anti-affinity | Pods with virtual node anti-affinity configured may also fail to be scheduled |
Performance impact
During pod scheduling, the system queries the inventory information and updates the cluster status. After enabling this policy, each pod can be scheduled 1 second faster than before, and up to 300 pods can be scheduled concurrently per second. If your workload involves scheduling large numbers of pods within a short period, assess the impact on your cluster before enabling this policy.
Step 1: Verify that the required components are installed
This policy depends on two components: Kube Scheduler (version 5.9 or later) and ACK Virtual Node (version 2.10.0 or later).
-
Log on to the ACK console. In the left-side navigation pane, click Clusters.
-
On the Clusters page, click the name of the cluster you want to manage. In the left-side navigation pane, choose Operations > Add-ons.
-
In the Core Components section, check that the following component versions are installed. If a component does not meet the version requirement, click Install or Upgrade on its card.
Component Minimum version Kube Scheduler 5.9 ACK Virtual Node 2.10.0
Step 2: Enable the policy
-
In the Core Components section, click Configuration in the lower-right corner of the Kube Scheduler card.
-
Select Enable Virtual Node-based Pod Scheduling and click OK.
