Volcano Versions Save

A Cloud Native Batch System (Project under CNCF)

v1.8.2

3 months ago

Changes since v1.8.1

  • fix wrong pods field format output of queue status (#3287 @Monokaix)
  • add ignored csi provisioner when compute csi resources (#3286 @Monokaix)
  • fix k8s.io/dynamic-resource-allocation go mod not found err (#3272 @Monokaix)
  • fix: json marsh error for unsupport type: func() (#3282 @lowang-bh)
  • fix job CRD metadata.annotations: Too long error (#3267 @Monokaix)
  • fix queue update validation err when status.allocated empty ( #3266 @Monokaix)
  • fix grafana dashboard format err (#3265 @Monokaix)
  • update parameter BestEffort of taskInfo after changing parameter InitResreq (#3232 @Lily922)
  • fix: allocated field in queue status is calcutated error (#3221 @shusley244)
  • Avoid repeatedly creating links to obtain node metrics (#3229 @wangyang0616)
  • skip 'pods' resource when checking if the Resource is empty (#3224 @Lily922)
  • queue realcapability change to min dimension of queue capability and … (#3219 @Monokaix)
  • support preemption when the number of pods of a node reaches the upper limit (#3202 @Lily922)
  • Delete duplicate logs generated by the predicate_helper method (#3214 @guoqinwill)
  • support preempting task with bound status (#3209 @Lily922)
  • support preemption when the number of attachment volumes of a node reaches the upper limit (#3212 @Lily922)
  • fix: task scheduling latancy metrics is not accurate (#3128 @lowang-bh)
  • backfill add score process (#3164 @lowang-bh)
  • Obtains the actual load data of a node from the custom metrics API (#3181 @wangyang0616)
  • Update the default value of parameter worker-threads-for-podgroup to 5 (#3180 @Lily922)
  • update volcano.sh/apis version (#3166 @Lily922)

v1.8.1

6 months ago

Changes since v1.8.0

  • fix: the pod anti-affinity constraint fails (#3140 @wangyang0616)
  • add podGroup status to session cache, fix the bug of repeatedly sending pordGroup update request when there is no condations field. (#3125 @Lily922)
  • add reSync task callback (#3119 @Monokaix)
  • successfully scheduled events will not be reported repeatedly for podGroup resource (#3117 @Lily922)
  • add reSync task callback (#3114 @Monokaix)
  • volcano adapt k8s v1.27 (#3101 @Mufengzhe)
  • add featuregates for volcano capabilities (#3093 @Monokaix)
  • msg information optimization; preemption logic optimization (#3082 @wangyang0616)
  • fix nodelock issue when using gang-scheduling (#3060 @wangyang0616)
  • pods are preferentially scheduled to machines that meet the current session resources (#3035 @wangyang0616)
  • optimize the jobflow architecture design diagram (#3025 @wangyang0616)
  • use one command of helm install to do smooth upgrade (#3017 @lowang-bh)
  • remove node out of sync state (#3006 @Monokaix)
  • fix: the task pipeline status is incompatible with cluster autoscaler (#3002 @wangyang0616)
  • when Volcano is uninstalled, two resources will remain (#2992 @gj199575)

What's Changed

Full Changelog: https://github.com/volcano-sh/volcano/compare/v1.8.0...v1.8.1

v1.8.0

8 months ago

What's New

Add JobFlow to support lightweight workflow orchestration

The workflow orchestration engine is widely used in high-performance computing, AI biomedicine, image processing, beauty, game AGI, scientific computing and other scenarios, helping users simplify the management of multiple parallel tasks and dependencies, and greatly improving the overall computing efficiency.

JobFlow is a lightweight task flow orchestration engine that focuses on Volcano job orchestration. It provides Volcano with job probes, job completion dependencies, job failure rate tolerance, and other diverse job dependency types, and supports complex process control primitives. The specific capabilities are as follows:

  • Support large-scale job management and complex task flow orchestration.
  • Support real-time query of the running status and task progress of all associated jobs.
  • Support automatic operation of jobs and scheduled start to release labor costs.
  • Various action strategies can be set for different tasks, and corresponding actions can be triggered when the task meets certain conditions, such as timeout retry, node failure drift.

Refer to the links for more details. (JobFlow doc, @hwdef, @lowang-bh, @zhoumingcheng)

Support vGPU scheduling and isolation

Since the outbreak of ChatGPT, there have been more and more research and development of AI large models, and different types of AI large models have been launched one after another. In production environment, users have pain points such as low resource utilization and inflexible GPU resource allocation. They have to purchase a large amount of redundant heterogeneous computing power to meet business needs, and heterogeneous computing power itself is expensive. It has brought a great burden to the development of the enterprise.

Starting from version 1.8, Volcano provides an abstract general framework for sharing devices (GPU, NPU, FPGA...), developers can customize multiple types of shared devices based on this framework. Currently Volcano has supported GPU device multiplexing, resource isolation based on this framework, details are as follows:

  • GPU sharing: Each task can apply to use part of the resources of a GPU card, and the GPU card can be shared among multiple tasks.
  • Device memory control: GPU can be allocated according to device memory (for example: 3000M) or allocated in proportion (for example: 50%) to realize GPU virtualization resource isolation capability.

Refer to the links for more details.

Support the preemption capability for GPU and user-defined resources

Currently, Volcano supports CPU, Memory and other basic resource preemption. GPU resources and user self-managed resources such as NPU, network resources have not been supported yet.

In version 1.8, the predication is refactored to provide more detailed response such as Unschedulable and UnschedulableAndUnresolvable for different scenarios. The GPU preemption function has been released based on the optimized framework, and the user developed scheduling plugins based on Volcano can be adapted and upgraded according to business scenarios.

Refer to the link for more details. (#2916, @wangyang0616)

Support ElasticSearch monitoring systems in node load-aware scheduling and rescheduling

The status of the kubernetes cluster changes in real time with the creation and termination of tasks. In some scenarios such as adding or deleting nodes, changing the affinity of Pods and Nodes, and dynamically changing the lifecycle of jobs, etc. The following problems will occur. Resource utilization is unbalanced, node performance bottlenecks are offline, etc. At this time, load aware scheduling and rescheduling can help user solve the above problems.

Prior to Volcano version 1.8, the load awareness scheduling and rescheduling only supports Prometheus. Starting from version 1.8, Volcano optimizes the monitoring index acquisition framework and adds support for ElasticSearch monitoring system.

Refer to the links for more details.

Optimize Volcano's ability to schedule microservices

Add Kubernetes default scheduler plugin enable and disable switch

Volcano is a unified integrated scheduling system that not only supports computing jobs such as AI and BigData, but also supports microservice workloads. It is compatible with scheduling plugins such as PodTopologySpread, VolumeZone, VolumeLimits, NodeAffinity, and PodAffinity of the Kubernetes default scheduler, and Kubernetes default scheduling plugins capabilities Enabled by default in Volcano.

Since Volcano 1.8, the Kubernetes default scheduling plugins can be freely selected to be turned on and off through the configuration file, and all of them are turned on by default. If you choose to turn off some plugins, such as: turn off the PodTopologySpread and VolumeZone plugins, you can set the corresponding values ​​in the predicate plugin is false. Refer to the links for more details. (#2748, @jiangkaihua)

Enhance scheduler to keep compatibility with ClusterAutoscaler

In the Kubernetes platform, Volcano is not only used as a scheduler for batch computing services, but also used as a scheduler for general services. Node horizontal scaling is one of the core functions of Kubernetes, which plays an important role in coping with the surge of user traffic and saving operating costs. Volcano optimizes job scheduling and other related logic, and enhances the compatibility and interaction with ClusterAutoscaler, mainly in the following two aspects:

  • The pod that enters the pipeline state in the scheduling phase triggers capacity expansion in time.
  • Candidate nodes are graded in gradients to reduce the impact of cluster terminating pods on scheduling load, and prevent pods from entering invalid pipeline states, resulting in cluster expansion by mistake.

Refer to the links for more details. (#2782, #3000, @wangyang0616)

Provide tolerance for exception of device plugin

When device plugin crashs or fails to report resouces for some reason and the total resource amount of the node is less than the allocated resource amount, Volcano considers that the node data is inconsistent, make the node as OutOfSync and isolates the node, and stops scheduling any new workload to the node. The isolocation machinism brought some impact to the cluster for example device plugin has no chance to be scheduled to the OutOfSync node. In Volcano v1.8, the machinism is enhanced to tolerate the exception of device plugin, the non-GPU workload like device plugin is still allowed to be scheduled to OutOfSync node.

Refer to the link for more details. (#2999, @Monokaix)

Add helm charts for Volcano

As Volcano is used in production environments and cloud environments with more and more users, simple and standard installation actions are crucial. Since version 1.8, Volcano has optimized charts package publishing and archiving actions, standardized the installation and use process, and completed the migration of historical versions v1.6 and v1.7 to the new helm warehouse. Refer to the link for more details. (Volcano helm-charts, @wangyang0616)

Other Notable Changes

  • rework device sharing in volcano(#2643, @archlitchi)
  • style(resource_info): replace 0, -1 with Zero,Infinity(#2650, @kingeasternsun)
  • perf(preempt): remove used copy(#2652, @kingeasternsun)
  • Add podGroup completed phase(#2667, @waiterQ)
  • delete redundant import alias(#2675, @Shoothzj)
  • delete redundant type convetion(#2627, @Shoothzj)
  • Extract MetricsClient and NodeMetrics to support other metrics platform(#2678, @Shoothzj)
  • upgrade klog package version to latest (#2682, @waiterQ)
  • Update how_to_use_gpu_sharing.md(#2686, @z2Zhang)
  • Rename AddPrePredicateFn annotation(#2689, @zbbkeepgoing)
  • Remove duplicate import in session.go(#2690, @zbbkeepgoing)
  • Optimize e2e runtime: reduce pytorch-plugin image download time(#2691, @wangyang0616)
  • Fix typo in tdm-plugin.md(#2692, @Shoothzj)
  • volcano metrics source support elasticsearch (#2694, @Shoothzj)
  • Skip stmt when tasks is empty (#2696, @zbbkeepgoing)
  • Add rescheduling related location logs (#2698, @wangyang0616)
  • introduce elasticsearch index name config (#2702, @Shoothzj)
  • add the impact of updating and deleting jobflow and jobtemplate. Stat… (#2704, @zhoumingcheng)
  • Decouple the scanning cycle from the processing cycle (#2705, @Shoothzj)
  • Fix metrics source not read es addr (#2707, @Shoothzj)
  • Support using other specified namespaces when installing with helm (#2709, @hwdef)
  • Allow config es source username and password (#2712, @Shoothzj)
  • Add method "ignorable" to Device interface (#2716, @archlitchi)
  • Use the latest example-mpi mirror (#2722, @wangyang0616)
  • Vgpu feature for volcano (#2724, @archlitchi)
  • Allow config metrics source tls ignore (#2729, @Shoothzj)
  • Update roadmap.md (#2730, @lixin963)
  • Skip early when reclaimees is empty (#2732, @zbbkeepgoing)
  • pod admission mutate patch affinity (#2737, @jiamin13579)
  • Allow config hostname field name (#2742, @Shoothzj)
  • optimize nodeorder logprint to easy find from pod; (#2743, @waiterQ)
  • Add more enable switch for predicate plugin. (#2750, @jiangkaihua)
  • Make errorCache configurable for predicate helper (#2756, @jinzhejz)
  • Refactor namespace fairshare function. (#2757, @jiangkaihua)
  • add label to service, name to port, to make it selectable via Service Monitors (#2767, @noyoshi)
  • enhancement: add keyword about allocate/pipeline/evict information in log (#2776, @lowang-bh)
  • Add more configuration options for helm chart (#2788, @Aakcht)
  • verify-golangci-lint fails to run in CI, code merging is not allowed (#2808, @wangyang0616)
  • Volcano automatically releases the corresponding helm charts package (#2823, @wangyang0616)
  • added nodeSelector & affinity & tolerations (#2836, @medicharlachiranjeevi)
  • modify code comment (#2847, @Yanping-io)
  • abstract Bind() param to kubernetes.Interface (#2869, @@Monokaix)
  • docs: make user more easily to build custom plugin (#2893, @xiao-jay)
  • make log more clear so that easy to debug (#2902, @lowang-bh)
  • Refactor PredicateFn for allocate and preempt actions (#2916, @wangyang0616)
  • Let the make manifest work properly (#2917, @wangyang0616)
  • Add jobflow-related content to Volcano automatic installation and deployment (#2936, @wangyang0616)
  • Upgrade the setup-go and checkout versions in the action && fix Spark CI (#2938, @wangyang0616)
  • use one helm command to install resource (#2985, @lowang-bh)
  • support concurrent-podgroup-syncs (#2997, @WulixuanS)
  • remove node out of sync state (#2998, @Monokaix)
  • Optimize the jobflow architecture design diagram (#3016, @wangyang0616)
  • enhancemant: make map with cap (#3020, @lowang-bh)

Bug Fixes

  • fix: fix logic when deal with resource dimension not defined in ScalarResources of r(#2637, @kingeasternsun)
  • Fix the problem exposed by golangci-lint static check(#2645, @wangyang0616)
  • fix local-up-volcano.sh(#2648, @hwdef)
  • add healthz for admission(#2651, @elinx)
  • The allocate phase only updates the podgroup in the pending state to the inqueue state(#2658, @wangyang0616)
  • little interface optimization for nodes others field(#2669, @waiterQ)
  • Fix typo of nonblocking(#2688, @Shoothzj)
  • fix incorrect camel case (#2703, @Shoothzj)
  • Fix MPI example not working in IPv6 (#2714, @gengwg)
  • fix daily release CI (#2715, @hwdef)
  • Remove escape character to fix broken grafana dashboard configuration (#2718, @shaobo76)
  • ginkgo upgraded from v2.3.0 to v2.8.3 (#2719, @wangyang0616)
  • imagePullPolicy changed from IfNotPresent to Always (#2721, @wangyang0616)
  • Avoid Panic when es has no data (#2726, @Shoothzj)
  • Fix trunk CI grafana.yaml file parsing error (#2728, @wangyang0616)
  • Fix: Multiplying Elasticsearch data by 100 (#2746, @Shoothzj)
  • Fix the problem that the program crashes if the gpuShare Devices is empty (#2751, @wangyang0616)
  • ignore no metrics server error log and lower actions, plugins enter leave log level (#2752, @waiterQ)
  • Upgrade the ubuntu version to fix the problem that CI cannot run (#2769, @wangyang0616)
  • Change the error message. (#2773, @gj199575)
  • fix: high priority job of two tasks cannot preempt low priority job of one task (#2775, @wangyang0616)
  • Use cases for blocking CI probabilistic failures (#2780 @wangyang0616)
  • Ensure deletion of pods is handled (#2784, @Monokaix)
  • Modify binpack score on nodes with releasing resources. (#2786, @jiangkaihua)
  • fix: lint error (#2801, @lowang-bh)
  • fix: undefined: buildJmpDirective on arm64 machine (#2805, @lowang-bh)
  • fix: UT works fine and covers (#2811, @wangyang0616)
  • fix some typos (#2817, @halegreen)
  • fix: nodeinfo clone (#2827, @lowang-bh)
  • fix issue that sa has no permit of leases when elect leader and enable leader elect by default (#2828, @lowang-bh)
  • Fix: the admission-init error is reported when Volcano is installed repeatedly. (#2834, @wangyang0616)
  • fix synchronous pvc/pv bind error when volcano schedule pod with pvc (#2844, @gj199575)
  • fix goimport check error (#2849, @wangyang0616)
  • Ensure delete event is handled (#2850, @WulixuanS)
  • solve make error on darwin os (#2857, @lowang-bh)
  • fix: log format param missing (#2862, @lowang-bh)
  • Remove vendor (#2863, @xiao-jay)
  • resolve unused variable warning (#2864, @lowang-bh)
  • add jobflow rbac in controller's sa (#2868, @lowang-bh)
  • make manifests and add crd about flow.volcano.sh (#2874, @lowang-bh)
  • fix pods pending but vcjob is running (#2886, @renwenlong-github)
  • install ginkgo bin if not exist (#2888, @lowang-bh)
  • fix controller deadlook when wait dependson task (#2898, @renwenlong-github)
  • fix local-up-volcano broken (#2905, @hwdef)
  • fix PodToplogySpread plugin violates maxSkew (#2929, @Monokaix)
  • fix some spelling issues reported by golint (#2942, @rayoluo)
  • Fix panic issue with proportional scheduling (#2968, @Cdayz)
  • fix scheduler metric e2e_scheduling_latency_milliseconds (#2970, @Wulixuan)
  • when Volcano is uninstalled, two resources will remain (#2980, @gj199575)
  • add the job creation permission for jobflow controller (#2988, @william-wang)
  • Fix: the pod pipeline status is incompatible with autoscaler capacity expansion (#3001, @wangyang0616)
  • add the jobflows/status,jobs/finalizers,jobtemplates/status,jobtempla… (#3005 @Mufengzhe)
  • Fix panic issue with job taskMinAvailable clone (#3008, @Tongruizhe)
  • Fix the problem that resource info ut test fails probabilistically (#3028, @wangyang0616)

v1.7.0

1 year ago

What's New

Enhanced Plugin for PyTorch Jobs

As one of the most popular AI frameworks, PyTorch has been widely used in deep learning fields such as computer vision and natural language processing. More and more users turn to Kubernetes to run PyTorch in containers for higher resource utilization and parallel processing efficiency.

Volcano 1.7 enhanced the plugin for PyTorch Jobs, freeing you from the manual configuration of container ports, MASTER_ADDR, MASTER_PORT, WORLD_SIZE, and RANK environment variables.

Other enhanced plugins include those for TensorFlow, MPI, and PyTorch Jobs. They are designed to help you run computing jobs on desired training frameworks with ease.

Volcano also provides an extended development framework for you to tailor Job plugins to your needs.

Refer to the links for more details. (#2313, @ccchenjiahuan)

Ray on Volcano

Ray is a unified framework for extending AI and Python applications. It can run on any machine, cluster, cloud, and Kubernetes cluster. Its community and ecosystem are growing steadily.

As machine learning workloads are hosting computing jobs at a density higher than ever before, single-node environments are failing in providing enough resources for training tasks. Here's where Ray comes in, which seamlessly coordinates resources of the entire cluster, instead of a single node, to run the same set of code. Ray is designed for common scenarios and any type of workloads.

For users running multiple types of Jobs, Volcano partners with Ray to provide high-performance batch scheduling. Ray on Volcano has been released in KubeRay 0.4.

Refer to the links for more details. (#2601(#755) @tgaddair)

Enhance Scheduling for Kubernetes long-running services

This enhancement makes Volcano fully compatible with the Kubernetes default scheduler for long-running services. With this enhancement, users can use Volcano to uniformly schedule long-running services and batch workloads in a single cluster.

Refer to the links for more details:

  • support multi scheduler name for scheduler and webhook(#2393, @jinzhejz)
  • Add nodeVolumeLimits plugin (#2458, @jiangkaihua)
  • Volcano support volumeZone plugin (#2480, @jiangkaihua)
  • Add podTopologySpread plugin (#2487, @Monokaix)
  • Add selector spread plugin (#2500, @elinx)

Support Kubernetes v1.25

This feature is designed to make Volcano compatible with Kubernetes 1.25.

Refer to the links for more details. (#2533, @wangyang0616)

Support multi-arch images for Volcano

This feature is designed to cross-compile volcano images of different architectures. For example, compile an image for the ARM64 architecture on an AMD64 machine.

Refer to the links for more details.(#2435, @ccchenjiahuan)

Optimize Queue Status Information

This feature is designed to enrich the information of the queue. Through this function, users can view the resource allocation of queues in real time, which is convenient for administrators to dynamically plan resources.

Refer to the links for more details.(#2592, @jiangkaihua)

Other Notable Changes

  • change enqueue to optional action(#2309, @wpeng102)
  • Add documentation on ttlSecondsAfterFinished(#2314, @jsolbrig)
  • remove redundant parentheses(#2316, @lucming)
  • update go.mod to add queue.spec.Affinity(#2319, @qiankunli)
  • Support JobReady for extender plugin(#2334, @xiaoxubeii)
  • add jobflow desgin docs(#2339, @zhoumingcheng)
  • deploy webhook by yaml(#2346, @hwdef)
  • add details for nodegroup doc(#2347, @qiankunli)
  • change e2e dependencies of makefile(#2350, @lucming)
  • update go to 1.18(#2353, @hwdef)
  • clean up the code(#2360, @lucming)
  • add csiNode cache for plugin(#2371, @wpeng102)
  • add rest config into ssn(#2378, @wpeng102)
  • Update field comment(#2386, @zhoumingcheng)
  • use patch to replace update pod operator(#2392, @wpeng102)
  • get csinodes from ssn(#2399, @wpeng102)
  • Consider initContainer GPUs quota in calculating(#2423, @kerthcet)
  • Some cleanups in job_info.go(#2434, @kerthcet)
  • Add initContainer GPU number when calculating GPUs(#2440, @kerthcet)
  • Optimize the way to build images in makefile(#2445, @hwdef)
  • add a flag to control whether inherit owner annotations when podgroup…(#2461, @elinx)
  • Update CA insert method in webhooks(#2463, @jiangkaihua)
  • chore: remove duplicate word in comments(#2470, @Abirdcfly)
  • add plugin registration log(#2477, @Monokaix)
  • Modify format verification by gofmt(#2499, @jiangkaihua)
  • scheduler support ephemeral-storage resources(#2505, @WulixuanS)
  • delete task qos limit in webhook(#2513, @waiterQ)
  • enable https healthz listen(#2523, @waiterQ)
  • Use RWMutex in framework(#2525, @kerthcet)
  • Realias scheduling api version name in package imports(#2526, @kerthcet)
  • Bump ginkgo version to v2.3.0(#2532, @kerthcet)
  • upgrade golangci-lint to v1.50.0(#2537, @waiterQ)
  • move prefilter out of predicates to improve performance(#2580, @elinx)
  • Move spark e2e integration from self-hosted to github-hosted(#2590, @Yikun)
  • Add node image information to the cache of the scheduler(#2593, @wangyang0616)
  • By default, the preemption function of gang and drf is turned off(#2613, @wangyang0616)
  • The referenced Volcano API version is updated to 1.7(#2618, @wangyang0616)
  • update image to v1.7.0-beta.0(#2628, @william-wang)
  • update image to v1.7.0(#2636, @wangyang0616)

Bug Fixes

  • fix: proportion metrics accuracy(#2297, @LY-today)
  • fix scheduler cache waitforcachesync(#2307, @xiaoanyunfei)
  • To record the start and end time of job scheduling(#2318, @dontan001)
  • fix convertQuanToPercent func(#2325, @autumn0207)
  • fix defaultMetricsInternal variable(#2326, @autumn0207)
  • filter the rescheduling strategies which contain victim functions(#2342, @Thor-wl)
  • fix bug in task dependsOn(#2351, @hwdef)
  • fix ci error about mpi plugin struct naming is not standardized(#2354, @hwdef)
  • try get get old pg when new pg not exist(#2400, @Akiqqqqqqq)
  • fix scheduler panic when webhook is not ready(#2410, @hwdef)
  • bugfix: panic if queue already exists(#2413, @elinx)
  • fix nil pointer in jobCache.update(#2420, @Akiqqqqqqq)
  • fix README.md clearly(#2427, @waiterQ)
  • Fix calculating available gpu num error(#2441, @kerthcet)
  • fix performance downgrade issue(#2443, @wpeng102)
  • docs: fix error in how to configure scheduler(#2446, @hwdef)
  • fix error during daily release(#2448, @hwdef)
  • fix potential mem leakage in nodeorder.go(#2453, @kerthcet)
  • fix bug predicateGPUbyMemory when gpu id not continuous(#2465, @WingkaiHo)
  • fix wrong comments in nodeorder plugin(#2472, @hwdef)
  • fix gpu shareing predictor allocate more than one gpu for pod(#2475, @WingkaiHo)
  • fix scheduler panic issue when pv is not created(#2483, @jinzhejz)
  • fix 2488, scheduler panic(#2489, @zhifanggao)
  • fix printing volcano-scheduler-configmap loading log(#2504, @waiterQ)
  • Fix scheduler plugin arguments readin bug(#2540, @jiangkaihua)
  • fix unit test(#2541, @waiterQ)
  • Fix unit test in cmd(#2548, @kerthcet)
  • fix issue queue is not met even if oldDeserved and deserved are the same(#2553, @jinzhejz)
  • pod could be preempted by default(#2545, @jinzhejz)
  • The requests of extended resource(such as nvidia.com/gpu) is missing in PodGroup's minResource(#2573, @jimoosciuc)
  • Remove Undetermined reason to fix cluster autoscaler compatibility(#2602, @tgaddair)
  • Modify preempt victim order(#2623, @jiangkaihua)
  • fix: deployment and pod, high priority cannot preempt low priority resources(#2630, @wangyang0616)
  • The preemption logic is only controlled by jobMinavailable in the gang plugin(#2634, @wangyang0616)

v1.6.0

1 year ago

What's New

Support Dynamic Scheduling Based on Real Node Load

This feature aims to schedule pods based on real node load instead of request resource, which will optimize the node resource utilization.Currently the pod is scheduled based on the request resources and node allocatable resources other than the node usage. This leads to the unbalanced resource usage of compute nodes. Pod is scheduled to node with higher usage and lower allocation rate. This is not what users expect. Users expect the usage of each node to be balanced. More details can be referred to https://github.com/volcano-sh/volcano/blob/master/docs/design/usage-based-scheduling.md. (https://github.com/volcano-sh/volcano/pull/2023, https://github.com/volcano-sh/volcano/pull/2129 @william-wang )

Support Rescheduling Based on Real Node Load

This feature enables users to rebalance the node utilization based on real node resource usage reqularlly, which is quite suitable for long-running workloads such as deployment. All the rescheduling policies and check interval can be configured according to custom scenarios. More details can be referred to https://github.com/volcano-sh/volcano/blob/master/docs/design/rescheduling.md. (https://github.com/volcano-sh/volcano/pull/2174, https://github.com/volcano-sh/volcano/pull/2184 @Thor-wl )

Support Elastic Job Scheduling

This feature allows Volcano to schedule volcano job based on the [min,max] configuration in the job, which will improve resource utilization rate and shorten the execution time of training job. More details can be referred to https://github.com/volcano-sh/volcano/blob/master/docs/design/elastic-scheduler.md. (https://github.com/volcano-sh/volcano/pull/2105, @qiankunli )

Add MPI Job Plugin

This feature provides a new volcano job plugin - MPI Plugin. It will be more convient for MPI users to make use of volcano job instead of manually making connections for hosts of different roles, registering required environment variables and so on. More details can be referred to https://github.com/volcano-sh/volcano/blob/master/docs/design/distributed-framework-plugins.md. (https://github.com/volcano-sh/volcano/pull/2237, @hwdef )

Other Notable Changes

Bug Fixes

v1.5.1

2 years ago

Changes since v1.5.0

  • bug fix: fix the driver pod can not be created due to unreasonable admit (#2081 @william-wang )
  • bug fix: fix error message in TestValidateJobCreate ( #2077 @william-wang )
  • bug fix: Open state queue can be deleted ( #2077 @Yikun )
  • bug fix: upgrade webhook from v1beta1 to v1 to make sure volcano webhook work on K8S 1.22+ ( #2077 @william-wang )
  • bug fix: fix the proportion plugin that ignore the inqueue resource in running jobs( #2057 @Thor-wl )
  • bug fix: set the initial phase to be pending for podgroup ( #2057 @Thor-wl )
  • bug fix: regenerate installer/volcano-development-arm64.yaml to fix arm64 deployment ( #2030 @hwdef )
  • bug fix: fix queue allocated exceeds capability ( #2035 @aidaizyy @Thor-wl )

v1.5.0

2 years ago

Changes since v1.5.0-Beta

v1.4.1

2 years ago

Changes since v1.4.0

v1.5.0-Beta

2 years ago

What's New

Support Task Dependency

In most mainstream computing platforms such as MPI and Tensorflow, different pods undertake different roles, for example, master/worker. It is necessary to start master or worker first due to the working principle for different platforms. This feature aims to provide the ability to make the start order correct. More details please refer to https://github.com/volcano-sh/volcano/blob/master/docs/design/task-launch-order-within-job.md. (https://github.com/volcano-sh/volcano/pull/1920, https://github.com/volcano-sh/volcano/pull/1833, @hwdef @shinytang6 @Thor-wl )

Support Reserve Resource for Queue

This feature provides the ability to reserve resources for specified queues in order to make sure there is always guaranteed resources for urgent jobs instead of waiting for resource release or being preempted. More details please refer to https://github.com/volcano-sh/volcano/blob/master/docs/design/queue-guarantee-resource-reservation-design.md (https://github.com/volcano-sh/volcano/pull/1905, https://github.com/volcano-sh/volcano/pull/1904, @qiankunli )

Support Specified Nodes for Volcano in Cluster

In some scenarios such as multiple schedulers, it is necessary for Volcano to be only responsible for part of nodes in the cluster. This feature enable users to configure the nodes that are responsible for the Volcano. More details can be referred to https://github.com/volcano-sh/volcano/pull/1834 (https://github.com/volcano-sh/volcano/pull/1821, @qiankunli )

Add Tendorflow Job Plugin

Volcano provides a unified object for job management which allows user to run AI training such as Tensorflow, Pytorch, Mxnet, MPI with Volcano Job and enjoy the enhanced lifecycle management. However it is a bit complex for some users. This features is to add Tensorflow plugin based on Volcano job plugin framework which reduces the complexity of running Tensorflow with Volcano and make it easy to use. More details can be referred to https://github.com/volcano-sh/volcano/blob/master/docs/design/distributed-framework-plugins.md (https://github.com/volcano-sh/volcano/pull/1874, @LuBingtan )

Other Notable Changes

Bug Fixes

v1.4.0

2 years ago

Changes since v1.4.0-Beta