Skip to main content

Release Announcement v1.4.0

We are pleased to announce that the Apache YuniKorn community has voted to release 1.4.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.


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

Release manager: Wilfred Spiegelenburg

Release date: 2023-11-20

Incompatible changes

Kubernetes version support

Running on Kubernetes 1.23 or earlier is not supported, for earlier Kubernetes releases use YuniKorn 1.3.0.

NOTE: YuniKorn 1.3.0 is the last release that supports Kubernetes 1.23 or earlier.


Kubernetes version support

YuniKorn 1.4.0 supports running on Kubernetes clusters from version 1.24 through to 1.28.

Please see YUNIKORN-1841 for details.

PreEnqueue plugin implementation

YuniKorn has added the pre-enqueue scheduling hook for the scheduler plugin. This allows gating Pods that are not yet ready for scheduling due to queue pressure. The pre-enqueue scheduling hook was added to Kubernetes via KEP-3521. It was turned on by default in Kubernetes 1.27.

The feature allows managing quotas outside the Kubernetes Resource Quota system with a lower impact on the API server and default scheduler. This functionality is important for the plugin implementation of YuniKorn only. In the standard mode YuniKorn has always been gating pods without an external impact.

Please see YUNIKORN-1844 for details.

Scoped logging

Logging within the YuniKorn code is now scoped to parts of the code base. Scoped logging allows changing the logging level for a part of the code. This gives administrators more control over the levels per subsystem.

Log levels can now also be specified in a textual form and not just as a number. Documentation is part of the service configuration

Please see YUNIKORN-1823 for details.

Removal of the Spark Operator Application Manager

The Spark operator application manager was added to support the Spark operator as an external integration. It added a full lifecycle for the Spark applications submitted via the operator. The application manager was never turned on by default and needed a custom configuration to enable it.

The implementation caused duplicate Spark applications to be created and was partially rolled back in YUNIKORN-643 as part of YuniKorn 0.11. The functionality that was left was also covered by the basic pod handling. To reduce code maintenance the remaining code is now also removed without the loss of functionality.

Please see YUNIKORN-2092 for details.

Removal of the YuniKorn application CRD

YuniKorn 1.4.0 has removed the application CRD. The application CRD was added to allow a simpler integration of applications with YuniKorn. This integration never got used and all current integrations rely on simple labels or annotations on the pods.

Please see YUNIKORN-1672 for details.

Application traceability

Tracking and troubleshooting applications is specific for YuniKorn. Kubernetes does not have an application concept. An event system has been added to expose the changes to applications, queues and nodes for external consumption.

Please see YUNIKORN-1628

Build updates

The YuniKorn builds no longer relies on centrally installed tools while building the binaries or images. Each build will download and maintain its own set of tools, not even shared between checked out repositories.

The change was announced on the dev@ mailing list in late July.

Please see these jiras for details:


The Apache YuniKorn community is pleased to welcome new PMC member Rainie Li and committers: Hsuang Zong Wu and PoAn Yang.