支援高效能運算場景,博雲容器雲打造智慧算力引擎

語言: CN / TW / HK

隨著 Kubernetes 作為 AI、大資料和高效能批量計算的下一代基礎設施的趨勢逐漸清晰,越來越多的企業對 Kubernetes 在深度學習、科學計算、高效能渲染等方面提出了更高的要求。

專案挑戰

原生 Kubernetes 作為通用的容器排程方案,仍與高效能運算場景下業務排程訴求存在一定差距,主要體現在:

待完善作業視角排程能力

Kubernetes 本身是以資源視角進行資源排程,Pod 作為基本的排程單元存在。Kubernetes 採用依次排程的方式實現對每個容器的排程管理,缺乏業務的作業視角進行排程的能力。

在大資料、人工智慧、高效能運算的應用場景下,往往需要多個容器同時配合執行計算。而 Kubernetes 原生的依次排程方式,完全無法滿足大資料、人工智慧場景下的排程需求。

例如,某個大資料應用需要跑1個 Driver 容器+10個 Executor 容器。如果容器以順序的方式一個一個進行排程,在啟動最後一個 Executor 容器時,由於資源不足而排程失敗,最終造成服務無法啟動。雖然,前面建立好的9個 Executor 容器執行正常,但平臺無法提供該大資料應用的正常服務,從資源佔用上來看也是一種浪費情況。

或者,當同時提交多個作業任務後,可能會因為資源不足而造成死鎖,進而導致叢集實際資源被佔滿,最終造成所有作業任務都無法執行的最壞情況。

待實現 GPU 資源共享切分

由於開源的 Kubernetes 本身對 GPU 提供的管理能力比較弱,無法實現 GPU共享按需排程的能力要求。

每個容器可以請求一個或多個 GPU,不支援 GPU 的資源切分

K8S 節點必須預裝相應的驅動程式

必須預裝 nvidia-docker 程式

在容器中,要想呼叫 NVIDIA 的 GPU ,需要通過 nvidia-docker 呼叫。nvidia-docker 是一個可以使用 GPU 的 docker,它在 docker 上做了一層封裝,通過 nvidia - docker - plugin 將 GPU 呼叫到 docker 上。

從 K8S 1.8版本後,推薦使用 Device - Plugins 方式來呼叫 GPU 。

待增加大資料等場景基因

Kubernetes 的核心工作負載面向無狀態應用、微服務應用等網際網路類應用進行設計,對水平伸縮、滾動升級有支援比較好。而到了大資料和高效能運算領域,想直接使用 Kubernetes 完成相應的作業和任務是非常困難。

待完善傳統方案資源隔離性

隨著 Hadoop 生態崛起後,在資源的隔離方面 Yarn 就開始使用 cgroup 用來實現對 CPU 資源隔離管理,藉助 JVM 的記憶體隔離機制從而實現對記憶體資源隔離管理;對於磁碟 IO 和網路 IO 的隔離,目前社群還在討論中;對於檔案系統環境的隔離,始終也無法做到完整的檔案系統隔離方案。

從整體上看,Yarn 的資源隔離能力比較弱,這就造成了當多個任務執行到同一個工作節點上時,不同任務之間會存在資源搶佔的問題,不同任務之間相互影響。

待增強彈性 按需擴容

大資料應用的高峰往往有明顯的週期性特徵。例如,實時計算資源消耗主要在白天。但大資料資源管理平臺普遍缺乏彈性管理能力,無法按應用所需進行快速擴容,為了應對業務高峰和突發的計算任務,只能通過預留出足夠多的資源方式來保證作業任務能夠正常執行。

解決方案

從2020年開始,越來越多的大資料、高效能運算等業務開始往 K8S 遷移。博雲智慧算力引擎,通過引入組排程、公平排程等方式,實現了面向作業進行排程,解決原生 K8S 排程器面向 Pod 排程的問題;通過引入CNCF批量計算專案volcano,實現大資料生態作業、佇列管理能力;通過引入博雲容器雲平臺,實現了 GPU 排程能力、資源隔離和資源抽象化供給能力。從而,進一步加強容器作為資源平臺的能力形成,為大資料、人工智慧、高效能運算等場景提高算力服務做好了準備。

博雲智慧算力引擎整體由三部分組成:

業務層:由業務軟體來呼叫博雲智慧算力引擎的介面,達到作業任務的批量計算和編排排程的管理要求;

排程層:由博雲智慧算力引擎來提供整體的排程、運算等服務能力;

資源層:由大量物理機或虛擬機器為博雲的企業級 K8S 叢集提供為計算賦能。

實現靈活的作業排程演算法

基於以下原則對作業進行排隊,提升整個叢集的資源利用率和作業吞吐量。

叢集資源使用情況

作業提交時間

作業資源申請量

作業優先順序

作業排他性

作業防餓死

實現 GPU 多維排程能力

平臺實現了 GPU 的統一管理、多維隔離、資源共享等排程能力。支援多個節點可以配置不同數量、不同型別的 GPU 卡,實現統一 GPU 卡管理;支援租戶或namespace 級別的 GPU 資源隔離,支援按照 GPU 卡型別進行隔離;支援多個業務共享 GPU 卡,支援 GPU 視訊記憶體隔離,提升 GPU 卡資源利用率。

實現基於 MPI 型別作業

一般一個執行的 MPI 作業,由 master/worker 兩部分組成,master 負責啟動 mpirun 命令,worker 負責執行真正的計算作業。

平臺通過對多個 pod 模板定義設定,實現分別對應 master/worker 的定義。藉助 gang scheduling,保證作業中的所有 pod 能夠同時啟動,已實現作業的管理。支援作業生命週期管理功能,當 mpirun 結束時,結束整個任務。

實現基於 Spark 框架作業

自 Spark 2.3版本開始,原生支援在 Kubernetes 中部署。

藉助容器的優勢,將執行時打包進映象中,可以加快分發速度並提升可移植性。藉助 Kubernetes 的優勢,能夠實現容器化應用的快速部署、彈性擴容、效能監控、日誌收集等管理功能。

實現佇列和優先順序搶佔

將整個叢集的資源分配到不同的佇列中,讓不同的使用者可以按需配置使用不同的佇列。當某佇列中資源空閒時,可以提供給另一個佇列中的作業使用。

當同時執行的作業眾多時,平臺可以實現高優先順序的作業可以搶佔低優先順序的作業資源,從而實現提前排程管理。同時,平臺也能夠避免低優先的任務“餓死”,長時間得不到執行。

實現高效能的容器網路

大資料、超算等場景下,需要在短時間啟動數以千計的計算例項並執行,這就對容器網路效能提出了更高的要求。

博雲自研的 BeyondFabric 網路方案,經歷了5個版本的迭代,已經在眾多客戶生產環境中穩定執行。目前,BeyondFabric 網路方案已實現對計算業務中的啟動時間、網路頻寬、網路就緒時間等指標的高效能支撐。

同時,BeyondFabric 網路能夠為 Windows 系統提供更優秀的容器網路效能。

實現使用者資源深度隔離

在租戶層面,平臺提供多租戶共享底層物理資源(計算、儲存、網路),做到不同租戶的應用、資料、虛擬網路的隔離,對於租戶自有的應用,租戶可以自由選擇隔離或者打通。

在資源層面,Docker 在一臺 Linux 上啟動多個在獨立沙箱內運作的應用,相互不影響。對不同容器的 CPU、記憶體、網路、儲存、程序等進行隔離。

實現資源彈性按需擴容

彈性伸縮是容器雲的一個重要特性,也是實施容器雲的一個重要業務場景。藉助容器雲的彈效能力,實現業務高峰時的資源快速擴容,避免為應對業務高峰預留過多的資源。

應用場景

HPC 高效能運算作為傳統分散式計算模式的代表,在工業模擬、視覺渲染、氣象環境、石油勘探、科研課題等諸多領域依然有著廣泛的應用。

隨著雲原生技術的爆發,Kubernetes 作為雲原生應用編排、管理的工具, 被越來越多的應用所接受和選擇。眾多使用者開始希望能將 HPC 應用遷移到容器中執行,通過 Kubernetes 強大的功能來進行作業管理。

工業模擬

某使用者有大量基於 Windows 的 HPC 應用,在遷移到容器環境之前,經常遇到資源佔用高,作業沒有隔離,維護需要後臺手動操作等情況。

伴隨 HPC 應用遷移到容器雲後,平臺通過優化作業任務,實現縮短計算時長;平臺提供健全資源隔離,降低了不同部門因提交作業所造成的資料安全風險,大大提升了執行效率。實現了單次作業提交建立例項數從原來的 300+,提升到現在 1000+,使用記憶體資源約 15-20T 的規模。

視覺渲染

使用者當前渲染業務還是以單機服務為主,現有軟體對批量計算作業排程不夠靈活,對叢集控制能力也比較差,作業配置、建立、釋放還都是以手工操作為主。

通過對業務的容器化改造,實現資源高效能排程、秒級彈性伸縮、GPU 統一管理等能力,輕鬆應對大規模的渲染需求。

方案優勢

博雲智慧算力引擎解決方案,基於容器技術實現了高效能運算場景的統一排程管理平臺,方案為上層各類超算業務提供了大資料、人工智慧及雲原生作業編排等技術服務。該方案具有如下技術優勢:

統一的資源管理

支援 Linux/Windows 計算資源池

支援 GPU 計算

支援批次、節點組管理

提升資源利用率

靈活的排程機制

支援 gang-scheduling 機制

支援主流的排程演算法

支援作業防餓死、排他性等機制

提升作業吞吐率

高效的作業提交

支援 HPC、大資料、人工智慧等作業

支援 MPI、TensorFlow 快捷提交

通過 DAG 模式支援 ETL 等常規作業

作業以容器執行,提升作業隔離性

多樣的排隊策略

多佇列管理,支援資源搶佔

支援設定優先順序

支援佇列視覺化

全面的資料可視

對接 S3 等儲存系統

實時線上檢視資料

集中的日誌告警

線上檢視作業日誌

線上檢視作業監控資料

線上配置告警規則

完善的租戶體系

劃分租戶資源

租戶資料隔離

操作許可權審計

相容全信創生態

支援 X86、海光、ARM 平臺

支援中標麒麟、統信等作業系統

已獲取主流認證證書

總結

通過容器化技術,博雲智慧算力引擎解決方案充分利用容器化技術,使大資料、人工智慧、高效能運算等場景在容器化技術的應用下,進一步提升了資源使用效率和降低運維管理複雜性,使雲原生技術價值得到進一步釋放,支撐高效能等計算場景下的企業完成數字化轉型。