Tungsten Fabric SDN — SmartNIC vRouter
1652
2022-05-29
Volcano是一個基于Kubernetes的云原生批量計算平臺,也是CNCF的首個批量計算項目。
Volcano 主要用于AI、大數據、基因、渲染等諸多高性能計算場景,對主流通用計算框架均有很好的支持。它提供高性能計算任務調度,異構設備管理,任務運行時管理等能力。本篇文章將從Volcano架構、Volcano核心概念及功能、Volcano Code Tour、平臺組件安裝部署等方面來帶大家認識Volcano。
一、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 云原生
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。