tree: 67e7f2fdeb8fac51586696dd03dfb4968f2b3980 [path history] [tgz]
  1. templates/
  2. .helmignore
  3. Chart.yaml
  4. README.md
  5. values.yaml
helm-charts/yunikorn/README.md

Apache YuniKorn - A Universal Scheduler

Apache YuniKorn 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.

Feature highlights

  • Features to support both batch jobs and long-running/stateful services.
  • Hierarchy queues with min/max resource quotas.
  • Resource fairness between queues, users and apps.
  • Cross-queue preemption based on fairness.
  • Automatically map incoming container requests to queues by policies.
  • Node partition: partition cluster to sub-clusters with dedicated quota/ACL management.
  • Fully compatible with K8s predicates, events, PV/PVC and admin commands.
  • Supports to work with Cluster AutoScaler to drive cluster scales up and down.

Deployment model

YuniKorn can be deployed with helm-charts on an existing K8s cluster. It can be deployed with or without the admission controller. When the admission controller is enabled, YuniKorn will be the primary scheduler that takes over the resource scheduling (the admission controller runs a mutation webhook that automatically mutates pod spec's schedulerName to yunikorn); when it is disabled, user needs to manually change the schedulerName to yunikorn in order to get apps scheduled by YuniKorn.

Supported K8s versions

K8s VersionSupport?
1.18.x (or earlier)X
1.19.xEnd-of-life; Untested
1.20.x
1.21.x
1.22.x
1.23.x

Installing the chart

helm repo add yunikorn  https://apache.github.io/yunikorn-release
helm repo update 
helm install yunikorn yunikorn/yunikorn

Configuration

The following table lists the configurable parameters of the YuniKorn chart and their default values.

ParameterDescriptionDefault
imagePullSecretsDocker repository secrets
serviceAccountService account nameyunikorn-admin
replicaCountScheduler replicas to be deployed1
hostNetworkWhether scheduler should run in the host networkfalse
image.repositoryScheduler image repositoryapache/yunikorn
image.tagScheduler image tagscheduler-latest
image.pullPolicyScheduler image pull policyAlways
pluginImage.repositoryScheduler plugin image repositoryapache/yunikorn
pluginImage.tagScheduler plugin image tagscheduler-plugin-latest
pluginImage.pullPolicyScheduler plugin image pull policyAlways
admissionController.replicaCountAdmission controller replicas to be deployed1
admissionController.serviceAccountAdmission controller service account nameyunikorn-admission-controller
admissionController.image.repositoryAdmission controller image repositoryapache/yunikorn
admissionController.image.tagAdmission controller image tagadmission-latest
admissionController.image.pullPolicyAdmission controller image pull policyAlways
admissionController.hostNetworkWhether admission controller should run in the host networktrue
admissionController.processNamespacesComma-separated list of namespace regexes to process (empty=ALL)``
admissionController.bypassNamespacesComma-separated list of namespace regexes to bypass (empty=NONE)^kube-system$
admissionController.labelNamespacesComma-separated list of namespace regexes to label (empty=ALL)``
admissionController.noLabelNamespacesComma-separated list of namespace regexes not to label (empty=NONE)``
admissionController.resources.requests.cpuAdmission controller CPU resource requests100m
admissionController.resources.requests.memoryAdmission controller memory resource requests500Mi
admissionController.resources.limits.cpuAdmission controller CPU resource limit500m
admissionController.resources.limits.memoryAdmission controller memory resource limit500Mi
admissionController.nodeSelectorAdmission controller deployment nodeSelector(s){}
admissionController.tolerationsAdmission controller deployment tolerations[]
admissionController.affinityAdmission controller deployment affinity{}
admissionController.service.typeAdmission controller service typeClusterIP
service.typeScheduler service typeClusterIP
service.portPort of the scheduler service9080
service.portWebPort of the web application service9889
resources.requests.cpuCPU resource requests200m
resources.requests.memoryMemory resource requests1Gi
resources.limits.cpuCPU resource limit4
resources.limits.memoryMemory resource limit2Gi
web.image.repositoryWeb app image repositoryapache/yunikorn
web.image.tagWeb app image tagweb-latest
web.image.pullPolicyWeb app image pull policyAlways
web.resources.requests.cpuWeb app CPU resource requests100m
web.resources.requests.memoryWeb app memory resource requests100Mi
web.resources.limits.cpuWeb app CPU resource limit200m
web.resources.limits.memoryWeb app memory resource limit500Mi
embedAdmissionControllerFlag for enabling/disabling the admission controllertrue
enableSchedulerPluginFlag for enabling/disabling scheduler plugin modefalse
operatorPluginsScheduler operator pluginsgeneral
nodeSelectorScheduler deployment nodeSelector(s){}
tolerationsScheduler deployment tolerations[]
affinityScheduler deployment affinity{}
placeholderImageDocker image of the placeholder podsk8s.gcr.io/pause

These parameters can be passed in via helm's --set option, such as --set embedAdmissionController=false.