Skip to main content

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

 

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

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

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

一、Volcano架构

1、Volcano全景

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

Volcano支持的部分计算框架

计算框架遇到的问题:

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

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

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

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

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

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

3)简化运维管理

2、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对任务提供丰富的调度能力。

3、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核心概念及功能

1、Volcano核心概念

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

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

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

2、作业管理插件

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

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

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

3、Scheduler架构

Scheduler支持动态配置和加载。

4、核心调度算法

1)Gang Scheduling

2)Fair Share

3)Preempt & Reclaim

4)Reserve & Backfill

5)Topology Aware Scheduling

6)GPU Sharing

三、Volcano Code Tour

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

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

四、安装部署

1、Volcano Install

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

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

2、Volcano 组件

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

Kubernetes 云原生

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...