一文理解Volcano的架構(gòu)設(shè)計

概述

Volcano是一個基于Kubernetes的云原生批量計算平臺魄藕,也是CNCF的首個批量計算項目涡匀。
Volcano 主要用于AI和大數(shù)據(jù)等諸多高性能計算場景淌实,對主流通用計算框架均有很好的支持募逞。它提供如下能力:

  • 高性能計算任務(wù)調(diào)度
  • 異構(gòu)設(shè)備管理
  • 任務(wù)運行時管理

Volcano架構(gòu)

1凌埂、Volcano全景

Volcano是基于Kubernetes的高性能批量計算平臺驱显,目前支持幾乎所有的主流計算框架,包括TensorFlow侨舆、Kubeflow秒紧、MPI、PyTorch挨下、飛漿熔恢、Spark等。
Volcano支持的部分計算框架遇到的問題:

  • 1)operator部署運維復(fù)雜
  • 2)不同框架對作業(yè)管理臭笆、并行計算等要求不同
  • 3)計算密集高叙淌,資源需求波動大,需要高級調(diào)度能力
    Volcano面向主流計算框架提供:
  • 1)統(tǒng)一容器基礎(chǔ)設(shè)施愁铺,提高資源利用率
  • 2)通用作業(yè)管理鹰霍、隊列Fair-share, Gang, bin-pack等高級調(diào)度算法
  • 3)簡化運維管理

2、Volcano整體架構(gòu)

Volcano整體架構(gòu)

Volcano的系統(tǒng)架構(gòu)
Volcano由scheduler茵乱、controllermanager茂洒、admission和vcctl組成:

  • Scheduler Volcano scheduler通過一系列的action和plugin調(diào)度Job,并為它找到一個最適合的節(jié)點瓶竭。與Kubernetes default-scheduler相比督勺,Volcano與眾不同的 地方是它支持針對Job的多種調(diào)度算法。
  • Controllermanager Volcano controllermanager管理CRD資源的生命周期斤贰。它主要由Queue ControllerManager智哀、 PodGroupControllerManager、 VCJob ControllerManager構(gòu)成荧恍。
  • Admission Volcano admission負(fù)責(zé)對CRD API資源進(jìn)行校驗瓷叫。
  • Vcctl Volcano vcctl是Volcano的命令行客戶端工具。
    Volcano利用聲明式的CRD定義我們的API送巡,主要有3個核心的API:
  • Volcano Job:對高性能任務(wù)的通用定義
  • PodGroup:提供了Job中Task的管理能力
  • Queue:為任務(wù)的分類提供了基礎(chǔ)
    Volcano 架構(gòu)的核心組件主要包含三個:
  • Admission:對Volcano CRD API提供校驗?zāi)芰Γ?/li>
  • ControllerManager:負(fù)責(zé)對Volcano CRD進(jìn)行資源管理;
  • Scheduler:對任務(wù)提供豐富的調(diào)度能力摹菠。

3、Volcano工作流程

從零開始運行Volcano作業(yè):

  • 1)用戶創(chuàng)建一個 Volcano 作業(yè)
  • 2)Volcano Admission 攔截作業(yè)的創(chuàng)建請求授艰,并進(jìn)行合法性校驗
  • 3)Kubernetes 持久化存儲 Volcano Job 到 ETCD
  • 4)ControllerManager 通過 List-Watch 機制觀察到Job 資源的創(chuàng)建辨嗽,創(chuàng)建任務(wù)(Pod)
  • 5)Scheduler 負(fù)責(zé)任務(wù)的調(diào)度,綁定 Node
  • 6)Kubelet Watch 到 Pod的創(chuàng)建淮腾,接管 Pod 的運行
  • 7)ControllerManager 監(jiān)控所有任務(wù)的運行狀態(tài)糟需,保證所有的任務(wù)在期望的狀態(tài)下運行

Volcano核心概念及功能

1屉佳、Volcano核心概念

  • 1)Queue:Queue的概念源于 Yarn,它是Cluster 級別的資源對象洲押,可為其聲明資源配額武花,也可由多namespace 共享,并且提供 soft isolation
  • 2)PodGroup:PodGroup是任務(wù)的分組杈帐,它與 queue 綁定体箕,占用隊列的資源。它與 Volcano Job 是一對一的關(guān)系挑童;也可為其聲明 Scheduling 條件
  • 3)Volcano Job:它是批量計算作業(yè)的定義累铅,支持定義作業(yè)所屬隊列、生命周期策略站叼、所包含的任務(wù)模板以及持久卷等信息

2娃兽、作業(yè)管理插件

  • svc:提供不同類型任務(wù)之間互訪能力
  • env:任務(wù)索引,例如 Tensorflow Worker index
  • ssh:ssh 秘鑰對創(chuàng)建及掛載尽楔,主要供 MPI 作業(yè)使用
    -### 3投储、Scheduler架構(gòu)
    Scheduler支持動態(tài)配置和加載。

4阔馋、核心調(diào)度算法

  • 1)Gang Scheduling
  • 2)Fair Share
  • 3)Preempt & Reclaim
  • 4)Reserve & Backfill
  • 5)Topology Aware Scheduling
  • 6)GPU Sharing

Volcano 代碼目錄結(jié)構(gòu)

  • cmd目錄是Volcano所有組件啟動的入口玛荞;
  • config 是Volcano的配置;
  • defs 是安裝時的配置呕寝;
  • docs 是Volcano的設(shè)計文檔勋眯;
  • example 提供了簡單的例子,hack 提供安裝時的腳本下梢;installer 提供安裝的模板凡恍。
  • pkg 是最重要的目錄,里面包含了 api怔球、controller、scheduler 浮还、webhook 等代碼竟坛。
  • test 提供了e2e測試用例, vendor是依賴庫。

安裝部署

1钧舌、Volcano Install

Volcano安裝部署有多種方式:若已存在K8S集群担汤,建議通過 Helm方式安裝部署,該方式支持自定義安裝配置洼冻;開發(fā)者建議通過Development Yaml方式部署崭歧。
對于開發(fā)者,Volcano已內(nèi)置一鍵式安裝部署腳本撞牢,路徑為 volcano. sh/volcano/hack/local-up-volcano. sh率碾。運行該腳本時叔营,默認(rèn)會使用kind創(chuàng)建 Docker in Docker的模擬集群,并安裝部署Volcano所宰。

2绒尊、Volcano 組件

正確安裝部署后,將生成4個組件仔粥,分別為:Volcano-admission婴谱、Volcano-admission-init、Volcano-controllers躯泰、 Volcano-scheduler ,其中admission-init以作業(yè)的方式生成證書谭羔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市麦向,隨后出現(xiàn)的幾起案子瘟裸,更是在濱河造成了極大的恐慌,老刑警劉巖磕蛇,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件景描,死亡現(xiàn)場離奇詭異,居然都是意外死亡秀撇,警方通過查閱死者的電腦和手機超棺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呵燕,“玉大人棠绘,你說我怎么就攤上這事≡倥ぃ” “怎么了氧苍?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長泛范。 經(jīng)常有香客問我让虐,道長,這世上最難降的妖魔是什么罢荡? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任赡突,我火速辦了婚禮,結(jié)果婚禮上区赵,老公的妹妹穿的比我還像新娘惭缰。我一直安慰自己,他們只是感情好笼才,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布漱受。 她就那樣靜靜地躺著,像睡著了一般骡送。 火紅的嫁衣襯著肌膚如雪昂羡。 梳的紋絲不亂的頭發(fā)上絮记,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音紧憾,去河邊找鬼到千。 笑死,一個胖子當(dāng)著我的面吹牛赴穗,可吹牛的內(nèi)容都是我干的憔四。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼般眉,長吁一口氣:“原來是場噩夢啊……” “哼了赵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起甸赃,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤柿汛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后埠对,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體络断,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年项玛,在試婚紗的時候發(fā)現(xiàn)自己被綠了貌笨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡襟沮,死狀恐怖锥惋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情开伏,我是刑警寧澤膀跌,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站固灵,受9級特大地震影響捅伤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巫玻,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一暑认、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧大审,春花似錦、人聲如沸座哩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽根穷。三九已至姜骡,卻和暖如春导坟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背圈澈。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工惫周, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人康栈。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓递递,卻偏偏與公主長得像,于是被迫代替她去往敵國和親啥么。 傳聞我的和親對象是個殘疾皇子登舞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容