Skip to main content

Release Announcement v1.5.0

We are pleased to announce that the Apache YuniKorn community has voted to release 1.5.0. Apache YuniKorn is a standalone resource scheduler, designed for managing and scheduling Batch and Data workloads on container orchestration frameworks like Kubernetes for on-prem and on-cloud use cases.

Overview

The Apache YuniKorn community has resolved 219 JIRAs in this release.

Release manager: TingYao Huang

Release date: 2024-03-14

Highlights

Kubernetes version support

YuniKorn 1.5.0 utilizes Kubernetes 1.29.2 as a build dependency, and adds official runtime support for Kubernetes 1.29 clusters. Kubernetes clusters from 1.24 through 1.29 are supported at runtime.

Event streaming API

Building on the application traceability enhancements released in YuniKorn 1.4.0, YuniKorn 1.5.0 adds support for consumers to subscribe to YuniKorn events in a streaming fashion. Additionaly, several new event types have been implemented. See the YUNIKORN-2115 umbrella JIRA for more information.

Web UI enhancements

YuniKorn 1.5.0 includes a number of updates to the Web UI:

Improved Prometheus metric grouping

YuniKorn queue metrics are now exposed via labels on a common yunikorn_queue_app metric with separate queue labels for each queue. The existing yunikorn_{queue_name}_queue_app metrics are still generated, but will be deprecated in YuniKorn 1.6.0 and removed in YuniKorn 1.7.0. See YUNIKORN-970 for further details.

Revamped scheduler initialization support

YuniKorn 1.5.0 has dramatically simplified the logic used during early startup to reconcile existing allocations with YuniKorn's internal state. The result is faster, more stable initialization and better consistency with the Kubernetes API server. See YUNIKORN-2099.

Better allocation traceability

YuniKorn internally tracks asks and allocations by a unique ID. In YuniKorn 1.5.0, the ask ID (typically derived from the Pod UID in Kubernetes) will be used as the basis for the allocation ID as well. A future enhancement is planned to unify asks and allocations into a single object for even more simplified tracking. See YUNIKORN-2204 for information regarding the YuniKorn 1.5.0 changes and YUNIKORN-2457 for future enhancements.

REST API enhancements

The YuniKorn REST API has been enhanced to support the retrieval of node utilization statistics for multiple resource types in addition to the existing support for dominant resource type. This allows for more expressive visualizations in the YuniKorn Web UI. See YUNIKORN-2257 for details.

Additionally, the REST API now supports querying rejected, running, and completed applications as well as individual applications without the need to walk the queue heirarchy first. See YUNIKORN-2235.

Incompatible changes

State-aware scheduling deprecated

State-aware scheduling has been deprecated in YuniKorn 1.5.0, and will be removed in YuniKorn 1.6.0. To preserve backwards compatibility, as of YuniKorn 1.6.0, the stateaware application sorting policy will be treated as an alias for fifo. Users are encouraged to migrate directly to fifo and utilize gang scheduling or specify queue maximum applications to limit concurrency instead. See YUNIKORN-2440 for more information.

Compressed ConfigMap entry handling

YUNIKORN-1875 added support for compressed ConfigMap entries in YuniKorn 1.4.0 using gzip compression. Due to an error in the implementation, values were required to be base64-encoded twice in the resulting YAML in order to be read. This has been corrected in YuniKorn 1.5.0, but will result in a parsing error if previously double-encoded data is encountered. See YUNIKORN-2287 for implementation details.

Partition vs. root queue limits

Previously, YuniKorn documentation stated that a root queue limit is equivalent to a partition limit. However, partition limits did not work correctly. Partition limits have now updated to be consistent with the documentation. See YUNIKORN-2260 for more information.

Application sort policy is no longer inherited

In old versions of YuniKorn, the application.sort.policy queue property on a parent queue was inherited by child queues. This behavior was deprecated in favor of child templates in YuniKorn 0.12.1 and has produced warnings since then. As of YuniKorn 1.5.0, the inheritance of application.sort.policy has been removed. See YUNIKORN-809 for details.

REST API: Periodic state dump endpoint removed

The /ws/v1/periodicstatedump endpoint in the REST API was deprecated and made a no-op in YuniKorn 1.2.0. It has been removed completely from YuniKorn 1.5.0. See YUNIKORN-2426 for details.

REST API: Response code changes

Several response status codes in the REST API have been modified to better conform to best practices. Missing objects will now return 404 (Not Found) instead of 400 (Bad Request). Disabled features will now return 500 (Internal Server Error) instead of 400 (Bad Request) or 501 (Not Implemented). See YUNIKORN-2163 for further details.

REST API: Health check response code

The health check REST API endpoint will now return a 200 (OK) regardless of health status rather than a 503 (Service Unavailable). This allows browser clients (such as the YuniKorn Web UI) to parse the response in all cases. To verify the health checks, the JSON response itself shoud be consulted rather than relying on the HTTP status code. See YUNIKORN-1997 for more information.

Credits

The YuniKorn 1.5.0 release would not have been possible without the hard work of our community and we would like to thank the following contributors to this release:

Alex Stiff, Cliff Su, Craig Condit, Denis Coric, Dong-Lin Hsieh, Geordie Mai, Hsin-Ying Lee, Hsuan Zong Wu, Jia Sheng Chen, JiaChi Wang, Junyan Ling, Kuan-Po Tseng, Manikandan Ramaraj, Michael Akinyemi, Ovidiu Feodorov, Peter Bacsko, PoAn Yang, Priyansh Choudhary, Qi Zhu, Ryan Lo, Ted Lin, Vinayak Hegde, Weiwei Yang, Wilfred Spiegelenburg, William Tom, Xie Yifan, Yongjun Zhang, Yu-Lin Chen

Additionally, the Apache YuniKorn community would like to welcome new PMC member Chia-Ping Tsai and new committers Kuan-Po Tseng, Ryan Lo, and Yu-Lin Chen.