Volcano是一个基于Kubernetes的云原生批量计算平台,也是CNCF的首个批量计算项目。

Volcano 主要用于AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。它提供高性能计算任务调度,异构设备管理,任务运行时管理等能力。本篇文章将从Volcano架构、Volcano核心概念及功能、Volcano Code Tour、平台组件安装部署等方面来带大家认识Volcano。

Volcano架构

Volcano全景

Volcano是基于Kubernetes的高性能批量计算平台,目前支持几乎所有的主流计算框架,包括MindSpore、TensorFlow、Kubeflow、MPI、PyTorch、飞浆、Spark、HOROVOD 等。

Volcano支持的部分计算框架

计算框架遇到的问题:

  • 1:1的operator部署运维复杂

  • 不同框架对作业管理、并行计算等要求不同

  • 计算密集高,资源需求波动大,需要高级调度能力

Volcano面向主流计算框架提供:

  • 统一容器基础设施,提高资源利用率

  • 通用作业管理、队列Fair-share, Gang, bin-pack等高级调度算法

  • 简化运维管理

Volcano整体架构

Volcano利用声明式的CRD定义我们的API,主要有3个核心的API,Volcano Job、PodGroup、Queue。

Volcano Job 是对高性能任务的通用定义,PodGroup提供了Job中Task的管理能力,Queue 为任务的分类提供了基础。

Volcano的架构

Volcano 核心组件主要包含三个:Admission、ControllerManager、Scheduler 。Admission对Volcano CRD API提供校验能力;ControllerManager负责对Volcano CRD进行资源管理;Scheduler对任务提供丰富的调度能力。

Volcano工作流程

从零开始运行Volcano作业:

1)用户创建一个 Volcano 作业

2)Volcano Admission 拦截作业的创建请求,并进行合法性校验

3)Kubernetes 持久化存储 Volcano Job 到 ETCD

4)ControllerManager 通过 List-Watch 机制观察到Job 资源的创建,创建任务(Pod)

5)Scheduler 负责任务的调度,绑定 Node

6)Kubelet Watch 到 Pod的创建,接管 Pod 的运行

7)ControllerManager 监控所有任务的运行状态,保证所有的任务在期望的状态下运行

Volcano核心概念及功能

Volcano核心概念

Queue

  • Queue的概念源于 Yarn,它是Cluster 级别的资源对象,可为其声明资源配额,也可由多namespace 共享,并且提供 soft isolation

PodGroup

  • PodGroup是任务的分组,它与 queue 绑定,占用队列的资源。它与 Volcano Job 是一对一的关系;也可为其声明 Scheduling 条件

Volcano Job

  • 它是批量计算作业的定义,支持定义作业所属队列、生命周期策略、所包含的任务模板以及持久卷等信息

作业管理插件

svc:提供不同类型任务之间互访能力

env:任务索引,例如 Tensorflow Worker index

ssh:ssh 秘钥对创建及挂载,主要供 MPI 作业使用

Scheduler架构

Scheduler支持动态配置和加载。

核心调度算法

  • Gang Scheduling

  • Fair Share

  • Preempt & Reclaim

  • Reserve & Backfill

  • Topology Aware Scheduling

  • GPU Sharing

Volcano Code Tour

cmd目录是Volcano所有组件启动的入口;config 是Volcano的配置;defs 是安装时的配置;docs 是Volcano的设计文档;example 提供了简单的例子,hack 提供安装时的脚本;installer 提供安装的模板。

pkg 是最重要的目录,里面包含了 api、controller、scheduler 、webhook 等代码。test 提供了e2e测试用例, vendor是依赖库。

安装部署

Volcano Install

Volcano安装部署有多种方式:若已存在K8S集群,建议通过 Helm方式安装部署,该方式支持自定义安装配置;开发者建议通过Development Yaml方式部署。

对于开发者,Volcano已内置一键式安装部署脚本,路径为 volcano. sh/volcano/hack/local-up-volcano. sh。运行该脚本时,默认会使用kind创建 Docker in Docker的模拟集群,并安装部署Volcano。

Volcano 组件

正确安装部署后,将生成4个组件,分别为:Volcano-admission、Volcano-admission-init、Volcano-controllers、 Volcano-scheduler ,其中admission-init以作业的方式生成证书。

本文来自:Volcano架构解读:基于Kubernetes的云原生批量计算平台

Volcano架构解读:基于Kubernetes的云原生批量计算平台相关推荐

  1. 《Kubernetes与云原生应用》系列之Kubernetes的系统架构与设计理念

    http://www.infoq.com/cn/articles/kubernetes-and-cloud-native-applications-part01 <Kubernetes与云原生应 ...

  2. 赠书活动 | Kubernetes、云原生、云计算领域不可不读的9本书,免费包邮哦!

    点击上方"程序猿技术大咖",关注并选择"设为星标" 回复"加群"获取入群讨论资格! 文末有赠书活动说明,正版好书等您来拿! 从时间线来看,容 ...

  3. 阿里云联合中国信通院发布《云计算开放应用架构》标准,加速云原生应用规模化落地进程

    简介:2021 年 5 月 26 日,由阿里云计算有限公司.中国信息通信研究院等 10 余家单位联合发起的<云计算开放应用架构>标准文件在"云原生产业大会"现场发布.该 ...

  4. 2018年已过半,Kubernetes和云原生的巨浪要把云计算带向何处

    Kubernetes,云原生,service mesh,这些惊人的全球增长趋势,令人欣喜之余迫不及待想要看看云原生在未来究竟会发展出怎样一派繁荣的景象. 容器领域最具影响力的技术峰会之一 KubeCo ...

  5. Kubernetes与云原生应用概览

    作者|宋净超 编辑|Cherry 本文是我在公司内部的培训和分享的资料,去掉了其中的 credential 部分,分享给大家.本文深入浅出,高屋建瓴,没有深入到具体细节,主要是为了给初次接触 kube ...

  6. Kubernetes作为云原生应用的基石数据加密算法

    Kubernetes是谷歌严格保密十几年的秘密武器-Borg的一个开源版本,是Docker分布式系统解决方案.2014年由Google公司启动. Kubernetes提供了面向应用的容器集群部署和管理 ...

  7. 【腾讯云 Finops Crane 集训营】基于 Kubernetes 实现云资源分析与成本优化平台

    基于 Kubernetes 实现云资源分析与成本优化平台 一.基本介绍 1.主要功能 2.整体架构 二.基于 Kubernetes 实现云资源分析与成本优化平台 1.准备工作 2.安装 Prometh ...

  8. 华为资深工程师为你深入讲解 Kubernetes及云原生应用

    <Kubernetes及云原生应用实践> 原价     ¥ 899.00 目前已达最低价 ¥399 文末点击阅读原文参团 课程名称 <Kubernetes及云原生应用实践>第一 ...

  9. 前沿分享|阿里云数据库解决方案架构师 王宏宇:云原生数据仓库AnalyticDB在零售行业的深度应用和业务价值

    简介:本篇内容为2021云栖大会-云原生数据仓库AnalyticDB技术与实践峰会分论坛中,阿里云数据库解决方案架构师 王宏宇关于"云原生数据仓库AnalyticDB在零售行业的深度应用和业 ...

最新文章

  1. QIIME 2教程. 23图形界面q2studio(2021.2)
  2. python 安装 pip,setuptools
  3. SpringMVC札集(05)——SpringMVC参数回显
  4. WCF入门的了解准备工作
  5. 谷歌fuchsiaos和华为鸿蒙,华为鸿蒙最大的对手现身!谷歌正式推送Fuchsia OS,或替代安卓...
  6. Leetcode 9. 回文数(Palindrome Number)
  7. python软件是什么原因引起的_Python对程序员重要的原因在哪里?
  8. JAVA读取Properties文件对象常用方法总结
  9. 并发编程----AQS架构
  10. 网络通信基础知识总结
  11. python能和wincc一起用_wincc7.3是否可以和博途V14同时装在一个系统上?-工业支持中心-西门子中国...
  12. 如何提高Solidworks运行速度
  13. Matlab的对角阵、三角阵,矩阵变换:矩阵的转置、旋转、翻转、求逆、方阵的行列式、矩阵的秩求解
  14. Tempo超进化,提效降本好帮手,工时管理小当家 Timewise
  15. ucml 连接虚字段
  16. RW08-7B(七管)收音机焊接
  17. 【win10】屏幕亮度无法调节的解决办法及相关注册表详解
  18. 淘宝/天猫获得淘宝app商品详情原数据 API
  19. 初识C语言,一起迈入编程世界的大门
  20. 过年各路红包玩法总结,都是上亿的项目!!!

热门文章

  1. Barsetto百胜图美式全自动磨豆咖啡机,好“咖”多磨
  2. 七种分布式系统的解决方案,一次性讲给你听!
  3. Java类加载顺序之一条日志引发的血案
  4. 融云「聊天室属性」: 语聊房、直播间有序运行和丝滑体验的绝技
  5. android uri详解,URI与URL详解
  6. 第十八章 AT32F403A基于V2库 定时器输出移相pwm
  7. 【郭东白架构课 开篇词】开篇词|没有战略意图,就成不了一个顶尖的架构师
  8. 计算机X线摄片检查,DR摄片检查须知及注意事项
  9. Vuetify自定义变量
  10. BZOJ4631: 踩气球