摘要:Volcano社区v1.6.0版本正式发布。此次版本增加了弹性作业管理、基于真实负载的动态调度、 基于真实负载的重调度、Volcano Job插件——MPI等多个新特性。

本文分享自华为云社区《Volcano社区v1.6.0版本正式发布》,作者:云容器大未来。

近日,Volcano社区v1.6.0版本正式发布。此次版本增加了弹性作业管理、基于真实负载的动态调度、 基于真实负载的重调度、Volcano Job插件——MPI等多个新特性。

Volcano 是业界首个云原生批量计算项目,于2019年6月在上海KubeCon正式开源,并在2020年4月成为CNCF官方项目。2022年4月,Volcano正式晋级为CNCF孵化项目。Volcano社区开源以来,受到众多开发者、合作伙伴和用户的认可和支持。截止目前,累计有400+全球开发者向项目贡献了代码。

Volcano v1.6.0 关键特性介绍

1.弹性作业调度

v1.6.0版本新增了弹性作业的调度支持,配合Volcano Job或Pytorch Job的弹性作业管理,实现AI训练任务、大数据分析的加速,同时结合云上的Spot instance 实现成本的缩减。

弹性作业允许Job的副本数在[min, max]范围弹性伸缩,其中min为job的minAvailable,max为job的副本数,弹性调度会优先为minAvailable Pod分配资源,保障每个应用的最小资源需求优先满足,如果有闲置资源,调度器会为Elastic Pod分配资源,加速计算进程。资源紧张时,调度器优先抢占Elastic Pod实现缩容。同时调度器也会平衡不同优先级的弹性作业间的资源分配,如支持高优先级作业抢占低优先级作业的弹性副本部分的资源。

设计文档:https://github.com/volcano-sh/volcano/blob/master/docs/design/elastic-scheduler.md

Issuehttps://github.com/volcano-sh/volcano/issues/1876

2.基于真实负载的动态调度

当前的基于分配率的调度模式在一些场景下会带来各个节点资源使用率不均衡的现象,如部分节点高分配率、低使用率等。v1.6.0版本中Volcano实现了和Prometheus的协同,借助Prometheus采集的集群节点负载数据进行调度决策,保证各个节点使用率最大程度均衡,同时允许用户配置节点cpu,memory的上限值,防止部分节点使用率过高导致节点异常。

调度策略配置样例如下:

actions: "enqueue, allocate, backfill"
tiers:
- plugins:
- name: priority
- name: gang
- name: conformance
- name: usage # usage based scheduling plugin
arguments:
thresholds:
CPUUsageAvg.5m: 90 # The node whose average usage in 5 minute is higher than 90% will be filtered in predicating stage
MEMUsageAvg.5m: 80 # The node whose average usage in 5 minute is higher than 80% will be filtered in predicating stage
- plugins:
- name: overcommit
- name: drf
- name: predicates
- name: proportion
- name: nodeorder
- name: binpack
metrics: # metrics server related configuration
address: http://192.168.0.10:9090 # mandatory, The Prometheus server address
interval: 30s # Optional, The scheduler pull metrics from Prometheus with this interval, 5s by default

设计文档:https://github.com/volcano-sh/volcano/blob/master/docs/design/usage-based-scheduling.md

Issuehttps://github.com/volcano-sh/volcano/issues/1777

3.基于真实负载的重调度

不合理的调度策略和作业生命周期的动态变化导致计算节点资源利用率不均衡,v1.6.0版本增加了基于真实负载和用户自定义重调度策略,驱逐部分高负载节点中的负载至低负载节点,周期性检测所有节点真实负载。即基于实际资源利用率而不是请求资源重新计划pod,支持定制配置的重新调度策略。

以上运行进一步平衡了各节点真实负载,提高集群资源利用率。

## Configuration Option actions: "enqueue, allocate, backfill, shuffle"  ## add 'shuffle' at the end of the actionstiers:
- plugins:
- name: priority
- name: gang
- name: conformance
- name: rescheduling ## rescheduling plugin
arguments:
interval: 5m ## optional, the strategies will be called in this duration periodcally. 5 minuters by default.
strategies: ## required, strategies working in order
- name: offlineOnly
- name: lowPriorityFirst
- name: lowNodeUtilization
params:
thresholds:
"cpu" : 20
"memory": 20
"pods": 20
targetThresholds:
"cpu" : 50
"memory": 50
"pods": 50
queueSelector: ## optional, select workloads in specified queues as potential evictees. All queues by default.
- default
- test-queue
labelSelector: ## optional, select workloads with specified labels as potential evictees. All labels by default.
business: offline
team: test
- plugins:
- name: overcommit
- name: drf
- name: predicates
- name: proportion
- name: nodeorder
- name: binpack

设计文档:https://github.com/volcano-sh/volcano/blob/master/docs/design/rescheduling.md

Issue:https://github.com/volcano-sh/volcano/issues/1777

4. Volcano 作业插件——MPI

使用Volcano Job可以运行MPI任务,Volcano作业插件(即svc,env和ssh作业插件)也为MPI任务的master和worker自动配置了免密通信、环境变量注入等工作。

新版本提供了一种新的运行MPI任务的方式,进一步简化用户的配置,优化使用体验。用户无需熟悉shell语法、无需关心master和worker的通信问题、无需手动配置ssh认证,非常简洁优雅的就可以启动一个MPI任务。

配置文件样例:

apiVersion: batch.volcano.sh/v1alpha1
kind: Job
metadata:
name: lm-mpi-job
spec:
minAvailable: 1
schedulerName: volcano
plugins:
mpi: ["--master=mpimaster","--worker=mpiworker","--port=22"] ## MPI plugin register
tasks:
- replicas: 1
name: mpimaster
policies:
- event: TaskCompleted
action: CompleteJob
template:
spec:
containers:
- command:
- /bin/sh
- -c
- |
mkdir -p /var/run/sshd; /usr/sbin/sshd;
mpiexec --allow-run-as-root --host ${MPI_HOST} -np 2 mpi_hello_world;
image: volcanosh/example-mpi:0.0.1
name: mpimaster
workingDir: /home
restartPolicy: OnFailure
- replicas: 2
name: mpiworker
template:
spec:
containers:
- command:
- /bin/sh
- -c
- |
mkdir -p /var/run/sshd; /usr/sbin/sshd -D;
image: volcanosh/example-mpi:0.0.1
name: mpiworker
workingDir: /home restartPolicy: OnFailure

设计文档:https://github.com/volcano-sh/volcano/blob/master/docs/design/distributed-framework-plugins.md

Issue:https://github.com/volcano-sh/volcano/pull/2194

- 相关链接 - 

Release note: https://github.com/volcano-sh/volcano/releases/tag/v1.6.0

Branch:https://github.com/volcano-sh/volcano/tree/release-1.6

深入了解Volcano

Volcano云原生批量计算项目主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。社区已吸引2.6万全球开发者,并获得2.4k Star和550+ Fork,参与贡献企业包括华为、AWS、百度、腾讯、京东、小红书等。目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到快速应用,已完成对Spark、Flink、Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、mxnet、KubeGene等众多主流计算框架的支持,并构建起完善的上下游生态。

Volcano官网:https://volcano.sh

Github : https://github.com/volcano-sh/volcano

点击关注,第一时间了解华为云新鲜技术~

Volcano社区v1.6.0版本正式发布的更多相关文章

  1. 官宣!ElasticJob 3.0.0 版本正式发布

    ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成.它通过弹性调度.资源管控.以及 ...

  2. Dapr v1.9.0 版本已发布

    Dapr是一套开源.可移植的事件驱动型运行时,允许开发人员轻松立足云端与边缘位置运行弹性.微服务.无状态以及有状态等应用程序类型.Dapr能够确保开发人员专注于编写业务逻辑,而不必分神于解决分布式系统 ...

  3. 微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布!!!

    微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布 Weixin-App-Shop 是捷微团队开发的微信小程序商城开源项目,涵盖了微信商城的全部功能,能够快速发布简单易用的小 ...

  4. Vue CLI4.0版本正式发布了!一起来看看有哪些新的变化吧

    Vue CLI4.0版本正式发布 这个主要的版本更新主要关注底层工具的必要版本更新.更好的默认设置和其他长期维护所需的微调. 我们希望为大多数用户提供平稳的迁移体验. Vue CLI v4提供了对Ni ...

  5. 二进制搭建Kubernetes集群(最新v1.16.0版本)

    目录 1.生产环境k8s平台架构 2.官方提供三种部署方式 3.服务器规划 4.系统初始化 5.Etcd集群部署 5.1.安装cfssl工具 5.2.生成etcd证书 5.2.1 创建用来生成 CA ...

  6. 小程序官网CMS开源项目出炉,Weixin-App-CMS 1.0 版本正式发布

    Weixin-App-CMS 是捷微团队开发的微信小程序CMS开源项目,涵盖了微网站的基本功能,能够快速发布简单易用的小程序网站.采用工具“微信web开发”上传小程序,即可快速体验发布体验小程序网站. ...

  7. 关于V1.6.0版本的项目总结

    10月28号,我们开了1.6项目的总结大会,包括Ting总在内,前端.后台.运维都来参加总结大会了.虽然目标基本达成,但同时也暴露出很多问题,我们希望各方能够坐下来总结一下自己或者各个相关团队的功过是 ...

  8. sa-token v1.9.0 版本已发布,带来激动人心新特性:同端互斥登录

    sa-token是什么? sa-token是一个JavaWeb轻量级权限认证框架, 官网首页:http://sa-token.dev33.cn/ 如果你经常使用腾讯QQ,就会发现它的登录有如下特点:它 ...

  9. 【开源】SpringBootNetty聊天室V1.2.0升级版本介绍

    前言 SpringBoot!微服务微架构的基础,Netty通信框架的元老级别框架,即之前的SpringBoot与Netty的实现聊天室的功能后已经过了不到一周的时间啦,今天我们更新了项目版本从V1.0 ...

随机推荐

  1. docker下将容器按照端口号分配

    问题情境:现在有一个服务器主机,安装了docker,想给成员分配各自的容器,但不想成员通过宿主机进入容器.那么成员如何直接访问容器呢? 成员可以通过ip加端口号访问 因此,需要生成一个容器,将容器的2 ...

  2. Spring-级联赋值

    一.级联赋值第一种方法 1.创建Emp类 package com.bean; public class Emp { private String EName; private String gende ...

  3. Git原理学习记录

    Git原理学习记录 1.git init git-test ​ git init 实际上就是在特定的目录下创建对应的目录和文件 2.object $ echo "V1" > ...

  4. Java 18 新功能介绍

    文章持续更新,可以关注公众号程序猿阿朗或访问未读代码博客. 本文 Github.com/niumoo/JavaNotes 已经收录,欢迎Star. Java 18 在2022 年 3 月 22 日正式 ...

  5. Jenkins+Allure测试报告+飞书机器人发送通知

    一.前言 之前讲了jenkins如何设置定时任务执行脚本,结合实际情况,本篇讲述在jenkins构建成功后,如何生成测试报告,以及推送飞书(因为我公司用的是飞书,所以是发送到飞书机器人). 本次实践搞 ...

  6. 通知:PostgreSQL证书申报退税请抓紧!

    2021年个税申报已于3月开始为了确保PostgreSQL证书能顺利退税中心特调研了学员中仅针对证书一项做退税申请没几天就得到结果2021年取得的PostgreSQL职业 技术证书确定可以退税!   ...

  7. R2DBC正式孵化成功,利好Spring Webflux

    2022年4月25日,R2DBC社区宣布具有普遍可用性的1.0.0.RELEASE正式发布. R2DBC致力于为反应式编程 API操作关系型数据库带来规范支持,R2DBC不同于我们熟知的JDBC规范, ...

  8. Win10系统链接蓝牙设备

    1. 进入控制面板,选择 设备 2. 进入设备界面,删除已有蓝牙,如果蓝牙耳机已经链接其他设备,先断开链接 3. 点击添加蓝牙或其他设备 4. 选择蓝牙,选择你的蓝牙耳机名称

  9. CPU缓存L1/L2/L3工作原理

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 一.前言 在过去的几年中,计算机处理器取得了相当大的进步 ...

  10. 代码审计VauditDemo程序到exp编写

    要对一个程序做系统的审计工作,很多人都认为代码审计工作是在我们将CMS安装好之后才开始的,其实不然,在安装的时候审计就已经开始了! 一般安装文件为install.php或install/或includ ...