ACK extends Kubernetes scheduling with job, topology-aware, QoS-aware, and descheduling policies.
Before you begin
-
Select a scheduling policy based on your role and business scenario:
-
O&M engineers focus on cluster cost and maximizing resource utilization, ensuring cluster high availability, balancing node loads, and avoiding single points of failure (SPOFs).
-
Application developers need simple deployment and management of applications, and adequate resources, such as CPU, GPU, and memory, for application performance.
-
-
To use ACK scheduling policies effectively, learn about Kubernetes Scheduler, Node labels, Node-pressure Eviction, and Pod topology spread constraints.
The ACK scheduler uses the same default policy as the open source Kubernetes scheduler, consisting of Filter and Score plug-ins.
Kubernetes-native scheduling policies
Kubernetes-native scheduling policies fall into two categories: node scheduling and inter-pod scheduling.
-
Node scheduling policies: schedule pods to nodes that match specific characteristics and resource conditions.
-
Inter-pod scheduling policies: control pod distribution to optimize deployment and ensure application high availability.
|
Policy |
Description |
Scenario |
|
Label nodes with key-value pairs, then use nodeSelector to schedule pods to matching nodes. For example, schedule pods to specific nodes or schedule pods to a specific node pool. |
A basic node selection method that does not support more complex scheduling features, such as soft scheduling rules. |
|
|
More flexible and fine-grained than nodeSelector. For example, the |
Schedule pods to nodes with specific characteristics, such as regions, device types, and hardware. Anti-affinity rules spread pods across nodes. |
|
|
A taint consists of a key, value, and effect (common effects: |
|
|
|
Pod labels determine pod-to-node scheduling. Supports the |
|
ACK scheduling policies
ACK extends Kubernetes scheduling for requirements such as ordered scale-out with reverse scale-in and load-aware scheduling based on actual node resource usage.
Configure priority-based resource scheduling
-
Intended role: Cluster O&M engineers.
-
Description: For clusters with mixed instance types, such as ECS instances and elastic container instances, and billing methods, such as subscription, pay-as-you-go, and preemptible instances, configure priority-based resource scheduling to define the node selection order for pod scheduling and reverse it for scale-in.
|
Policy |
Description |
Scenario |
Reference |
|
Custom priority-based resource scheduling |
Specify a custom Scale-in reverses this order: elastic container instances first, then pay-as-you-go ECS instances, then subscription ECS instances. |
|
Job scheduling
-
Intended role: Cluster O&M engineers.
-
Description: The default scheduler is not suited for batch job scheduling. ACK supports gang scheduling and capacity scheduling for batch jobs.
|
Policy |
Description |
Scenario |
Reference |
|
Gang Scheduling |
All related pods are scheduled together or none at all, preventing abnormal processes from blocking the group. |
|
|
|
Capacity Scheduling |
Reserve resources for specific namespaces or user groups, and improve utilization through resource sharing when cluster resources are constrained. |
In multi-tenant clusters, varied resource lifecycles and usage patterns lead to low utilization. Resource sharing and reclaiming improve overall utilization. |
Topology-awarescheduling
-
Intended role: Cluster O&M engineers.
-
Description: Machine learning and big data workloads require intensive inter-pod communication, but the default scheduler distributes pods evenly across the cluster, extending job completion times. Native affinity mechanisms cannot retry across multiple topology domains.
|
Description |
Scenario |
Reference |
|
The scheduler uses gang scheduling labels to ensure all pod resource requests are fulfilled simultaneously. Topology-aware scheduling iterates through topology domains to find one that meets all pod requirements. Associate node pools with deployment sets to schedule pods to ECS instances in the same low-latency deployment set for improved job performance. |
In machine learning or big data jobs, pods need frequent communication. The scheduler iterates through topology domains to find one that satisfies all pod requirements, reducing job completion time. |
Load-aware scheduling
-
Intended role: Cluster O&M engineers and application developers.
-
Description: The native scheduler assigns pods based on resource allocation, not actual usage. Because node loads change dynamically with traffic and workloads, the native scheduler cannot detect real-time resource loads.
|
Description |
Scenario |
Reference |
|
The ACK scheduler monitors node load history and estimates new pod resource usage to schedule pods to lower-load nodes, preventing crashes from overloaded nodes. |
Applications sensitive to load, access latency, or resource QoS. |
Use load-aware hotspot descheduling to prevent imbalanced node loads.
QoS-aware scheduling
-
Intended role: Cluster O&M engineers and application developers.
-
Description: Kubernetes QoS classes (Guaranteed, Burstable, BestEffort) determine pod eviction priority when node resources are insufficient. ACK adds SLO-aware scheduling to enhance latency-sensitive application performance while ensuring resource access for lower-priority jobs.
|
Policy |
Description |
Scenario |
Reference |
|
CPU Burst |
The OS may throttle container CPU usage within a cycle (CPU throttling). CPU Burst lets idle containers accumulate CPU time slices and burst above the CPU limit during demand spikes, enhancing performance and reducing latency. |
|
|
|
Topology-aware CPU scheduling |
Pin CPU-sensitive pods to specific CPU cores to avoid performance degradation from frequent context switching and cross-NUMA memory access. |
|
|
|
Topology-aware GPU scheduling |
When multiple GPU-intensive pods run concurrently, they may compete for GPU resources and switch between GPUs or NUMA nodes, degrading performance. Topology-aware GPU scheduling assigns workloads to specific GPUs, reducing cross-NUMA memory access and improving performance. |
|
|
|
Dynamic resource overcommitment |
Reclaim resources allocated to but unused by pods and schedule them to low-priority jobs for overcommitment. Use the following single-node QoS policies together to prevent applications from affecting each other:
|
Improve cluster resource utilization through colocation. Typical scenarios include ML model training and inference, big data batch processing and analysis, online services, and offline backup. |
|
|
Dynamically modify the resource parameters of a pod |
In Kubernetes 1.27 or earlier, modifying container parameters requires deleting and recreating the pod. ACK lets you modify CPU, memory, and disk IOPS limits without restarting the pod. |
Temporary CPU or memory resource adjustments. |
Descheduling
-
Intended role: Cluster O&M engineers and application developers.
-
Description: As cluster conditions change, running pods may need migration to more suitable nodes.
|
Policy |
Description |
Scenario |
Reference |
|
Descheduling |
Reschedule improperly placed pods to optimal nodes when hotspots form due to uneven resource usage or node attribute changes, ensuring workload high availability and efficiency. |
|
|
|
Work with load-aware hotspot descheduling |
Combine load-aware scheduling and hotspot descheduling to monitor node loads and automatically rebalance nodes that exceed the load threshold. |
Billing
ACK scheduling incurs charges for cluster management and cloud resources based on the billing rules. Additional scheduling component fees:
-
The default ACK scheduler (kube-scheduler) is free to install and use.
-
ACK resource scheduling and descheduling are based on ack-koordinator. ack-koordinator is free to install and use, but may incur additional fees in specific scenarios. See ack-koordinator (FKA ack-slo-manager).
FAQ
For scheduling issues, see Scheduling FAQ.
References
-
For kube-scheduler and ack-koordinator introduction and release notes, see Container Service for Kubernetes:kube-scheduler and ack-koordinator (FKA ack-slo-manager).
-
To customize kube-scheduler behavior, see Customize scheduler parameters.
-
For scheduling best practices, such as colocation architecture, see Best practices for resource scheduling.
-
Enable cost insights to view resource usage, cost allocation, and savings recommendations for ACK clusters.
-
For GPU scheduling and memory isolation, see GPU sharing.
-
For virtual node scheduling, see Schedule a pod to a virtual node.