北京时间2021年2月27日,Volcano社区正式发布v1.2.0版本。此次发布的1.2版本关键特性为支持TDM和SLA插件。
Volcano 于2019年6月在上海KubeCon正式开源,在2020年4月成为CNCF官方项目,目前共发布了10+版本特性,受到众多开发者、合作伙伴和用户的认可和支持。截止目前,累计有180+开发者向项目贡献了代码。
Volcano v1.2 关键特性介绍
1
SLA插件
SLA(Service Level Agreement)插件支持用户通过为作业定义最大预期等待时长的方式来进行调度优先级排序。用户可以对单个作业打上名为“sla-waiting-time”的annotation,定义最大预期等待时长。equeue action和allocate action将比较作业的实际等待时长和最大预期等待时长的关系。若已超时,该作业将被直接被标记为“piplined”的状态,获取优先分配资源的权利。JobOrderFn中会根据作业实际等待时间和最大预期等待时间的差值,决定作业调度的排序。
```
apiVersion: batch.volcano.sh/v1alpha1
kind: Job
metadata:
annotations:
sla-waiting-time: 1h2m3s // 定义作业最大等待时长为1h2m3s
```
例1 作业的SLA定义
用户也可以通过在scheduler的配置文件中定义全局SLA的方式,为所有作业配置SLA。
```
actions: "enqueue, allocate, backfill"
tiers:
- plugins:
- name: priority
- name: gang
- name: sla
arguments:
sla-waiting-time: 1h2m3s // 全局定义作业SLA
```
例2 全局定义作业SLA
SLA插件的实现是对v1.1.0版本中作业资源预留特性设计的优化。该特性的详细设计和实现请参考或点击阅读全文查看:https://github.com/volcano-sh/volcano/blob/master/docs/design/sla-plugin.md
2
TDM插件
TDM(Time Division Multiplexing)插件的使用场景为:某些节点同时属于Kubernetes集群和Yarn集群,且被分时复用。
为了满足该场景,可提前为复用节点打上“volcano.sh/revocable-zone”标签,并在scheduler配置文件中配置分用时段。打上“volcano.sh/preemptable: true”标签的作业,其所属的Pod也将集成该标签。这类Pod将被优先调度到复用节点上。当复用节点的管理权在集群层面进行切换时(分用时段到期),复用节点上的负载将被驱逐,腾空后的节点纳入到新集群中。
```
tiers:
- plugins:
- name: tdm
arguments:
tdm.revocable-zone.rz1: 1:00-4:00
tdm.evict.period: 1m
```
例3 TDM插件在scheduler中的配置
3
其他特性
v1.2.0还新增了和系统稳定性、用户体验、性能优化有关的一些特性,如重构了overcommit插件、当作业更新时同时更新ssh secret、优化了nodeorder插件等。
Volcano社区和生态建设进展
深入了解Volcano
Volcano官网:https://volcano.sh/zh/docs/
Github : https://github.com/volcano-sh/volcano