yunikorn-release

Apache YuniKorn (Incubating) - A Universal Scheduler

Build Status codecov Go Report Card License Repo Size


Apache YuniKorn (Incubating) is a light-weight, universal resource scheduler for container orchestrator systems. It was created to achieve fine-grained resource sharing for various workloads efficiently on a large scale, multi-tenant, and cloud-native environment. YuniKorn brings a unified, cross-platform, scheduling experience for mixed workloads that consist of stateless batch workloads and stateful services.

YuniKorn now supports K8s and can be deployed as a custom K8s scheduler. YuniKorn’s architecture design also allows adding different shim layer and adopt to different ResourceManager implementation including Apache Hadoop YARN, or any other systems.

Architecture

Following chart illustrates the high-level architecture of YuniKorn.

Arhitecture

YuniKorn consists of the following components spread over multiple code repositories, most of the following projects are written in GoLang.

Feature highlights

Main scheduling features:

Integration with K8s:

The k8shim provides the integration for K8s scheduling and supported features include:

Performance testing

We love high-performance software, and we made tremendous efforts to make it to support large scale cluster and high-churning tasks. Here’s Performance Test Result

Deployment model

Yunikorn can be deployed as a K8s custom scheduler, and take over all POD scheduling. An enhancement is open to improve coexistence behaviour of the YuniKorn scheduler with other Kubernetes schedulers, like the default scheduler, in the cluster: Co-existing with other K8s schedulers.

Verified K8s versions

K8s Version Support?
1.12.x (or earlier) X
1.13.x
1.14.x
1.15.x
1.16.x To be verified
1.17.x To be verified

Web UI

YuniKorn has builtin web UIs for queue hierarchies and apps. See below:

Queues-UI

Apps-UI

Roadmap

Want to learn more about future of YuniKorn? You can find more information about what are already supported and future plans in the Road Map.

How to use

The simplest way to run YuniKorn is to build a docker image and then deployed to Kubernetes with a yaml file, running as a customized scheduler. Then you can run workloads with this scheduler. See more instructions from the User Guide.

How can I get involved?

Apache YuniKorn (Incubating) community includes engineers from Alibaba, Apple, Cloudera, Linkedin, Microsoft, Nvidia, Tencent, Uber, etc. (sorted by alphabet). Want to join the community? We welcome any form of contributions, code, documentation or suggestions!

To get involved, please read following resources.

Other Resources

Demo videos

Communication channels

Blog posts

Apache based blogs:

3rd party blog posts: