tree: 1813c93a78e3a71e5d5819167a143ca8d8e1711b [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.20.x (or earlier)X
1.21.x
1.22.x
1.23.x
1.24.x
1.25.x
1.26.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[]
replicaCountScheduler replicas to be deployed1
serviceAccountService account nameyunikorn-admin
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
podLabelsScheduler pod labels{}
admissionController.podLabelsAdmission controller pod labels{}
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.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
admissionController.priorityClassNameAdmission controller pod priority""
priorityClassNameScheduler pod priority""
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
nodeSelectorScheduler deployment nodeSelector(s){}
tolerationsScheduler deployment tolerations[]
affinityScheduler deployment affinity{}
yunikornDefaultsData for the yunikorn-defaults ConfigMap{}

These parameters can be passed in via helm's --set and --values (-f) options, such as --set resources.requests.cpu=2000m or -f myvalues.yaml.

In addition to these parameters, YuniKorn supports reading most of its runtime configuration directly from two ConfigMaps in the installed namespace: yunikorn-defaults and yunikorn-configs. The yunikorn-defaults ConfigMap is rendered by Helm based on the contents of the yunikornDefaults parameter. The yunikorn-configs ConfigMap is entirely ignored by Helm, and can be populated (or not) using external mechanisms. At runtime, YuniKorn will evaluate both ConfigMaps, using the contents of yunikorn-configs as an override to yunikorn-defaults.

Deprecated Configuration

The following configuration parameters are deprecated and will be ignored in a future release of YuniKorn:

ParameterDescriptionReplacement
operatorPluginsScheduler operator pluginsservice.operatorPlugins ConfigMap entry
placeholderImageDocker image of the placeholder podsservice.placeholderImage ConfigMap entry
admissionController.processNamespacesList of namespace regexes to process (empty=ALL)admissionController.filtering.processNamespaces ConfigMap entry
admissionController.bypassNamespacesList of namespace regexes to bypass (empty=NONE)admissionController.filtering.bypassNamespaces ConfigMap entry
admissionController.labelNamespacesList of namespace regexes to label (empty=ALL)admissionController.filtering.labelNamespaces ConfigMap entry
admissionController.noLabelNamespacesList of namespace regexes not to label (empty=NONE)admissionController.filtering.noLabelNamespaces ConfigMap entry
configurationYAML-formatted queue configurationqueues.yaml ConfigMap entry

Currently, if both the deprecated parameter and the replacement ConfigMap entry are specified, the ConfigMap entry will take precedence.