ack-koordinator is a quality of service (QoS)-aware scheduling system. It uses features such as CPU Burst and dynamic resource overcommitment to optimize cluster resource use while ensuring the quality of service for high-priority applications, enhancing overall system stability. ack-koordinator also supports resource profiling and descheduling. This topic introduces the ack-koordinator component and its release notes.
For the component's release and change history, see Release notes.
ack-koordinator
ack-koordinator is a Kubernetes-based QoS-aware scheduling system that improves cluster resource utilization and provides QoS guarantees for applications with different priorities. This prevents resource contention from affecting application performance. For example, ack-koordinator supports the colocation of service-oriented applications and batch processing tasks on the same node. It uses capabilities such as dynamic resource overcommitment and QoS-aware scheduling to improve resource utilization while ensuring QoS for service applications. This makes it suitable for batch processing, high-performance computing (HPC), AI tasks, and machine learning scenarios. ack-koordinator is the core component that enables QoS-aware scheduling in ACK. It provides features such as elastic resource limits, topology-aware scheduling, dynamic resource overcommitment, load-aware scheduling, descheduling, and resource profiling.
To get started, log on to the ACK console to install the ack-koordinator component in your ACK cluster. You can then enable and use its features with a ConfigMap or Pod annotations.
Architecture
ack-koordinator consists of central components and node-level components.
Koordinator Manager: A central component deployed as a Deployment. It consists of a primary and a standby instance to ensure high availability.
SLO Controller: Manages resource overcommitment. It dynamically adjusts the overcommitted resources in the cluster based on the running status of nodes during colocation and manages differentiated SLO policies for each node.
Recommender: Provides the resource profiling feature. It estimates the peak resource requirements for workloads to simplify the configuration of container resource specifications.
Koordinator Descheduler: A central component deployed as a Deployment that provides the descheduling feature.
Koordlet: A node-level component deployed as a DaemonSet. It supports dynamic resource overcommitment, load-aware scheduling, and QoS-aware scheduling in colocation scenarios.
Koordinator scheduling plug-in: The Koord-Scheduler module is not included when you install the ack-koordinator component. Instead, its scheduling capabilities are integrated as a plug-in into the ACK scheduler and installed by default.
In an ACK Serverless cluster, ack-koordinator includes only the Koordinator Manager component and provides the resource profiling feature.
Versioning
Starting from v1.1.1-ack.1, the version number of ack-koordinator uses the x.y.z-ackn format.
x.y.z: Corresponds to the open source Koordinator version, meaning ack-koordinator supports all features of that version.ackn: Represents feature enhancements and optimizations based on the open source version.
Key concepts
Supported features
The ack-koordinator component includes the features of the corresponding open source Koordinator version. During installation, only the feature-gates for common features are enabled by default. To use other features, you must manually enable their corresponding feature-gates for the ack-koordinator modules. For more information, see the Koordinator official documentation.
Type | Feature | Description | Consistency with open source |
Schedules Pods to nodes with lower real-time loads to balance the cluster load and reduce the risk of node failure. | Yes | ||
Improves application QoS by providing temporary, extra CPU resources during load spikes. This is achieved by automatically detecting CPU throttling and adaptively adjusting container parameters. | Yes | ||
Pins a Pod to run on specific CPU cores of a node. This mitigates application performance degradation caused by CPU context switching and cross-NUMA memory access. | No | ||
Quantifies allocated but unused CPU and memory resources by collecting real-time node load data, then provides these idle resources to BestEffort workloads while ensuring fairness. | Yes | ||
In dynamic resource overcommitment scenarios, this feature limits the CPU usage of BE Pods to protect the performance of LS Pods on the node. | Yes | ||
Guarantees CPU resources for high-priority (LS) applications by preventing resource contention with lower-priority ones. | Yes | ||
Allows you to set QoS parameters for containers based on their priority. It prioritizes the performance of high-priority applications while ensuring memory resource fairness. | Yes | ||
Isolates L3 cache and memory bandwidth usage between applications of different priorities to protect the performance of LS applications. | Yes | ||
Lets you dynamically modify node-level isolation parameters (CPU, memory, and disk I/O) for a Pod or Deployment without a restart by changing its cgroup files. | No | ||
Leverages the Intel® Data Streaming Accelerator (DSA) to improve data processing efficiency for data-intensive workloads on a node. It also further enhances the acceleration of nearby memory access for containers. | No | ||
Improves memory access performance for memory-intensive workloads by securely migrating memory from remote to local NUMA nodes for CPU-pinned applications. This process increases the local memory access hit rate. | No | ||
Reschedules suboptimally placed Pods to healthier nodes to maintain cluster health, optimize resource usage, and improve workload QoS. This process is typically triggered by uneven resource utilization or high node load. | Yes | ||
Automatically deschedules Pods from nodes that exceed a specified load watermark to prevent severe load imbalances. | Yes | ||
GPU topology awareness | Optimizes performance by scheduling Pods to the most suitable NUMA node, which reduces cross-NUMA node access. | No | |
Analyzes historical resource usage data to recommend resource specifications for containers, simplifying the process of configuring container | No | ||
Installation and management
ack-koordinator is available on the Add-ons page in the ACK console. You can install, upgrade, and uninstall the component on the Add-ons page.
Prerequisites
You have an ACK cluster that runs Kubernetes 1.18 or later. For more information about how to upgrade a cluster, see Manually upgrade a cluster.
You have Helm v3.0 or later installed. To upgrade Helm, see [Component Upgrade] Announcement on Helm V2 Tiller Upgrade and How do I manually upgrade the version of Helm?.
Install and manage the component
You can install the ack-koordinator component on the Add-ons page. You can also return to this page to modify the component's parameters or upgrade it as needed.
For component versions earlier than v0.7 deployed from Marketplace, see Migrate ack-koordinator from Marketplace to add-ons to complete the migration.
Install the component: Follow the steps below to install the component and verify the deployment.
Modify component parameters: The system automatically redeploys ack-koordinator based on the new configuration.
Upgrade the component: If you have manually modified the deployed modules of ack-koordinator, such as Deployments or DaemonSets, the upgrade overwrites your custom configurations.
-
Log on to the ACK console. In the left navigation pane, click Clusters.
-
On the Clusters page, click the name of your cluster. In the left navigation pane, click Components and Add-ons .
On the Add-ons page, find ack-koordinator. In the ack-koordinator(ack-slo-manager) card, click Install.
In the Install ack-koordinator(ack-slo-manager) dialog box, modify the configuration parameters as needed and click OK.
(Optional) On the Cluster Management page, in the left-side navigation pane, select to view the deployment status of ack-koordinator.
If the Status of ack-koordinator is Deployed, it indicates that the component has been successfully deployed.
Uninstall the component
Clean up ConfigMaps of existing nodes
The topology-aware CPU scheduling feature creates a topology ConfigMap in the kube-system namespace for each ACK node. Starting from v0.5.1, ack-koordinator automatically cleans up the ConfigMaps of removed nodes. However, when you uninstall ack-koordinator, it retains the ConfigMaps of existing nodes. These leftover ConfigMaps do not affect other features but occupy storage space. We recommend that you clean them up.
On the Add-ons page, find ack-koordinator and follow the on-screen instructions to uninstall the component.
Delete the topology ConfigMaps.
In the left-side navigation pane, choose . At the top of the page, select the kube-system namespace.
In the search box, enter -numa-info. From the list, find the ConfigMap that matches the
${NODENAME}-numa-infoformat. In the Actions column for the ConfigMap, click Delete and follow the on-screen instructions.
Clean up CRD objects
When you uninstall the ack-koordinator component, some CRD objects may remain. These leftover objects do not affect other features, but they occupy storage space. If you plan to reinstall ack-koordinator, these objects might interfere with the component's functionality. We recommend that you clean them up. The affected CRDs are listed below.
autoscaling.alibabacloud.com | slo.koordinator.sh |
Expand | Expand slo.koordinator.sh API Group to see version v1alpha1 containing two CRD resource types: NodeSLO and NodeMetric. |
Billing
Installing or using the ack-koordinator component is free. However, you may incur costs in the following scenarios:
ack-koordinator is a non-managed component that consumes worker node resources after installation. You can configure resource requests for each module during installation.
By default, ack-koordinator exposes monitoring metrics for features such as resource profiling and fine-grained scheduling in Prometheus format. If you select the Enable Prometheus monitoring metrics for ack-koordinator option and use Managed Service for Prometheus, these metrics are billed as custom metrics. The fees vary based on factors such as cluster size and the number of applications. Before you enable this feature, we recommend reading Billing of Prometheus instances to understand the free tier and pricing for custom metrics. To monitor and manage your resource usage, use usage query.
Related information
Relationship between ack-koordinator and ack-slo-manager
ack-slo-manager is the predecessor of ack-koordinator and incubated the open source project Koordinator. As Koordinator matured, its technologies were incorporated back into ack-slo-manager. ack-koordinator offers the features of the open source Koordinator version and provides more capabilities than its predecessor. To access new features and bug fixes, upgrade to the latest component version by following the instructions in Migrate ack-koordinator from Marketplace to Add-ons.
Migrate ack-koordinator from Marketplace to Add-ons
If you deployed ack-koordinator from Marketplace (versions earlier than v0.7), you must uninstall and then reinstall it. Follow the instructions below to complete the migration.
If you modified the ConfigMap of the Marketplace ack-koordinator, back it up before you upgrade. If you have not modified the ConfigMap, skip to step 2 and upgrade the component directly.
Back up the ack-koordinator ConfigMap by using kubectl or the console.
kubectl
Run the following command to save the original configuration to the slo-config.yaml file. Replace the namespace (for example, kube-system) and name (for example, ack-slo-manager-config) with the actual values of your ConfigMap.
kubectl get cm -n kube-system ack-slo-manager-config -o yaml > slo-config.yamlRun the
vim slo-config.yamlcommand to edit the file. Change the namespace of the ConfigMap tokube-system, change thenamefield toack-slo-config, and remove allannotationsandlabelsfrom the ConfigMap to prevent them from being overwritten during the upgrade.Run the following command to apply the modified configuration to the cluster.
kubectl apply -f slo-config.yaml
Console
Record the key-value pairs of the original ConfigMap.
In the navigation pane on the left, choose . At the top of the page, select the Namespace that you specified when you installed ack-koordinator from Marketplace. The default namespace is kube-system.
In the Name search box, enter ack-slo-manager-config, click the name of the target ConfigMap, and record the key-value pairs in the ConfigMap.
Create a new ConfigMap by using the original ConfigMap's key-value pairs.
In the navigation pane on the left, choose . At the top of the page, select All Namespaces.
In the upper-right corner of the ConfigMaps page, click Create. Set ConfigMap Name to ack-slo-config and select the kube-system namespace. Click + Add, enter the recorded key-value pairs, and click Create.
In the navigation pane on the left, choose . Find the ack-slo-manager component that was installed from Marketplace, and in the Actions column, click Delete to uninstall it.
On the Add-ons page, install the latest version of ack-koordinator. For more information, see Install and manage components.
ImportantIf you modified the ConfigMap for the ack-koordinator component from Marketplace, you must enter the name of the backup ConfigMap that you created in Step 1 (for example, ack-slo-config) into the corresponding parameter field in the ack-koordinator Parameters dialog box.
Migrate from resource-controller to ack-koordinator
The resource-controller component has been deprecated. ack-koordinator now supports all features of resource-controller, such as topology-aware CPU scheduling and dynamically modifying the resource parameters of a pod. If your cluster uses resource-controller, follow these steps to migrate from resource-controller to ack-koordinator.
Upgrade resource-controller to the latest version.
-
Log on to the ACK console. In the left navigation pane, click Clusters.
-
On the Clusters page, click the name of your cluster. In the left navigation pane, click Components and Add-ons .
On the Add-ons page, find resource-controller and follow the on-screen instructions to upgrade the component.
-
Install and configure ack-koordinator.
On the Add-ons page, find ack-koordinator and follow the on-screen instructions to install it.
In the Installack-koordinator(ack-slo-manager) dialog box, configure the agentFeatures parameter, which is the feature-gate switch for Koordlet, and other parameters as needed. Then, click OK.
Check whether your cluster uses the CPU Burst feature described in Dynamically modify the resource parameters of a pod. This feature modifies the cpu.cfs_quota_us cgroups file for a specific container by creating a CRD or adding a pod annotation. If you use this feature, go to step ii. Otherwise, skip to step c.
Run the following command to get the current feature-gate configuration from the DaemonSet YAML file of ack-koordlet.
kubectl get daemonset -n kube-system ack-koordlet -o yaml |grep feature-gates - --feature-gates=AllAlpha=false,AllBeta=false,...,CPUBurst=true,....Modify the feature-gate configuration for ack-koordlet to disable the CPU Burst performance optimization policy by setting
CPUBurst=false. Use commas (,) to separate parameters. Keep other settings unchanged.Disabling the policy also disables the CPU Burst mechanism for all containers in the cluster. This prevents two modules from simultaneously modifying the cpu.cfs_quota_us cgroups file.
AllAlpha=false,AllBeta=false,...,CPUBurst=false,....To enable elastic CPU resources for containers, use the CPU Burst performance optimization policy to automatically adjust the CPU elasticity of pods. For more information, see Enable the CPU Burst performance optimization policy.
In the navigation pane on the left, choose to view the deployment status of ack-koordinator.
If the Status for ack-koordinator is Deployed, the component is successfully deployed.
On the Add-ons page, find resource-controller and follow the on-screen instructions to uninstall it.
FAQ
Component installation error: no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1" ensure CRDs are installed first
Managed Service for Prometheus is not installed in the cluster. Install it by following the instructions in Connect and configure Managed Service for Prometheus, or deselect Enable Prometheus Metrics for ACK-Koordinator when you install ack-koordinator on the Add-ons page.
Component installation error: task install-addons-xxx timeout, error install addons map[ack-slo-manager:Can't install release with errors: ... function "lookup" not defined
Upgrade Helm to v3.0 or later. See Component upgrade: Helm V2 Tiller upgrade announcement for more information.
Release notes
July 2026
Version | Image address | Date | Changes | Impact |
v1.8.0-ack1.25 |
| July 29, 2026 |
| None |
January 2026
Version | Image address | Date | Changes | Impact |
v1.6.1-ack1.23 |
| January 30, 2026 |
| None |
November 2025
Version | Image address | Release date | Description | Impact |
v1.6.1-ack1.21 |
| November 06, 2025 |
| None |
August 2025
Version | Image address | Release date | Description | Impact |
v1.6.1-ack1.19 |
| August 08, 2025 |
| None |
July 2025
Version | Image address | Release date | Description | Impact |
v1.6.1-ack1.18 |
| July 30, 2025 |
| None |
v1.6.1-ack1.17 |
| July 14, 2025 |
| None |
v1.6.1-ack1.16 |
| July 04, 2025 |
| None |
September 2024
Version | Image address | Release date | Description | Impact |
v1.5.0-ack1.14 |
| September 12, 2024 |
| None |
July 2024
Version | Image address | Release date | Description | Impact |
v1.5.0-ack1.12 |
| July 29, 2024 | Optimized internal interfaces | None |
January 2024
Version | Image address | Release date | Description | Impact |
v1.3.0-ack1.8 |
| 2024-01-24 |
| None |
December 2023
Version | Image address | Release date | Description | Impact |
v1.3.0-ack1.7 |
| December 21, 2023 |
| None |
October 2023
Version | Image | Release date | Description | Impact |
v1.3.0-ack1.6 |
| October 19, 2023 | Optimized internal interfaces. | None |
June 2023
Version | Image address | Release date | Description | Impact |
v1.2.0-ack1.3 |
| 2023-06-09 | Optimized internal interfaces. | None |
April 2023
Version | Image address | Release date | Description | Impact |
v1.2.0-ack1.2 |
| April 25, 2023 |
| None |
March 2023
Version | Image address | Release date | Description | Impact |
v1.1.1-ack.2 |
| March 23, 2023 | Optimized internal interfaces. | None |
January 2023
Version | Image | Release date | Description | Impact |
v1.1.1-ack.1 |
| January 11, 2023 |
| None |
November 2022
Version | Image address | Release date | Description | Impact |
v0.8.0 |
| November 17, 2022 |
| After upgrading the component, you must upgrade your ACK cluster to version 1.22.15-ack-2.0 to use load-aware pod scheduling. This upgrade does not affect other features. |
September 2022
Version | Image address | Release date | Description | Impact |
v0.7.2 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.7.2 | September 16, 2022 | Fixed an issue introduced in v0.7.1 where topology-aware scheduling failed to apply to pods. | None |
v0.7.1 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.7.1 | September 2, 2022 |
| None |
August 2022
Version | Image | Release date | Description | Impact |
v0.7.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.7.0 | August 8, 2022 | ack-slo-manager installation has moved from Marketplace to Add-ons. | None |
July 2022
Version | Image address | Release date | Description | Impact |
v0.6.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.6.0 | July 26, 2022 | Optimized internal APIs and simplified component configuration. | None |
June 2022
Version | Image | Date | Description | Impact |
v0.5.2 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.5.2 | June 14, 2022 |
| None |
v0.5.1 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.5.1 | June 2, 2022 |
| None |
April 2022
Version | Image address | Release date | Description | Impact |
v0.5.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.5.0 | April 29, 2022 |
| None |
v0.4.1 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.4.1 | April 14, 2022 |
| None |
v0.4.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.4.0 | April 11, 2022 | Optimized memory consumption of slo-agent. | None |
February 2022
Version | Image address | Release date | Description | Impact |
v0.3.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.3.0 | February 25, 2022 |
| None |
December 2021
Version | Image address | Release date | Description | Impact |
v0.2.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.2.0 | 2021-12-10 |
| None |
September 2021
Version | Image address | Release date | Description | Impact |
v0.1.1 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.1.1-c2ccefa | September 02, 2021 | Optimized internal interfaces. | None |
July 2021
Version | Image address | Release date | Description | Impact |
v0.1.0 | registry.{REGION}.aliyuncs.com/acs/ack-slo-manager:v0.1.0-09766de | July 8, 2021 | Now supports load-aware pod scheduling. | None |