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:
- YUNIKORN-1362 Allow node list filtering based on selector
- YUNIKORN-2088 Node utilization chart updates
- YUNIKORN-2214 Add Sorting functionality to the Allocation view
- YUNIKORN-2414 Support air-gapped clusters by embedding fonts and icons
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.