北京时间2020年10月30日,Volcano社区正式发布v1.1.0版本。作为CNCF首个也是唯一的容器批量计算项目。Volcano的本次版本发布成为自三个月前v1.0.0发布后又一重要里程碑。


Volcano社区正式发布v1.1.0版本_java


Volcano是基于Kubernetes构建的下一代批量计算平台,提供作业管理、批量调度、依赖管理、资源预留等能力,支持包括TensorFlow、Spark、MPI、Slurm在内的多个业界主流计算框架,主要帮助用户将AI、大数据等资源消耗波动大、计算密集型的业务从传统的Batch、HPC系统快速迁移到云原生。


Volcano于2019年6月份在KubeCon 上海宣布开源,目前发布了12个特性版本,受到多家企业的认可和支持。截止目前,累计有90多个开发者向项目贡献了代码。


Volcano社区正式发布v1.1.0版本_java_02

Volcano社区:

2019年6月上海KubeCon正式开源

2020年4月成为CNCF官方项目

2020年7月1.0版本正式发布


社区活跃度:

  • 1.3k star,280+ fork,140+ 贡献者

  • 5 Maintainer,7 Reviewer (来自华为、IBM、腾讯、Apple等企业)

  • 20+ 家企业用户



本次版本主要包含以下特性


1

支持HDRF

HDRF算法的引入为公平性调度提供了更加有效的手段。HDRF是一种基于权重树的公平性调度策略。在Volcano中,权重树的叶子节点表示待调度Pod,非叶子节点包含Task、Job、PodGroup和Queue等。所有节点均有一个正值权重,表示该节点的相对重要性。调度过程中,会根据权重树自动决定Pod的调度次序,同时支持权重的动态调整。


2

支持自动化目标任务识别与资源预留

资源预留是高性能计算中一类典型场景。从不同的角度出发,该需求又可细分为抢占式预留与非抢占式预留、可预见性预留与不可预见性预留、自动化目标作业识别与自定义作业识别等。在工业实践中,最为常见的场景是大作业(资源需求量较大的任务)的资源预留,防止其出现饿死。


本次版本支持的是自动化作业识别与资源预留。调度器会自动识别出当前待调度作业队列中优先级最高且等待时间最久的作业,作为目标作业。随后的调度周期中,调度器会为该作业锁定若干节点。被锁定的节点将在目标作业被调度前拒绝新作业的投递,等待当前运行在自身上面的负载逐步退出,以尽可能的腾出空闲资源为目标作业的投递做准备。


为了保持预留效率与调度器总体性能的平衡性,Volcano在锁定节点的选取和锁定算法方面采用了许多优化。该特性目前支持的是非抢占式资源预留,不会对现有业务产生影响。


3

支持调度性能监控

支持监控组件是本次版本的又一亮点。通过与Grafana、Prometheus等开源组件的配合,可以直观的查看到Volcano的实时调度情况,包括当前系统的作业总量、状态分布、实时吞吐、时延等核心指标。监控组件也将为调度器性能自动调优提供参考依据。


4

其他更新

本次版本还加入了其他优化点,如队列权重校验、支持Pending作业自定义再入队重试次数、支持Arm64等。同时,本次版本也修复了allocate action调度高优先级任务失败后低优先级任务调度阻塞、指定minAvailable小于作业副本数时队列容量超限等bug。



总体来看,本次版本依旧继承了Volcano社区以业界需求为导向、以调度手段多样性和极致性能追求为核心的理念,继续在通用型高性能负载批量计算的框架下深耕。监控等特性的引入也展现出Volcano在可视化、自动化性能调优等方向可能性的深入思考。