摘要:Volcano 方便AI,大數據,基因,渲染等諸多行業通用計算框架介入,提供高性能任務調度引擎,高性能異構芯片管理,高性能任務運行管理等能力。
Volcano 是一個 Kubernetes 雲原生的批量計算平台,也是CNCF的首個批量計算項目。
Volcano 方便AI,大數據,基因,渲染等諸多行業通用計算框架介入,提供高性能任務調度引擎,高性能異構芯片管理,高性能任務運行管理等能力。
監控目標態設計
為AI調度系統開發監控的目的
- 隨着集群規模的擴張和調度規模的變大,調度效率和調度公平性的追求就不會停下。
- Volcano 社區展開了長時間的開發,快速的功能迭代,插件逐步增加,這時候在合適的場景下使用合適的插件就變得比較重要,這時候需要選用合適的指標來做性能和公平性評估,來評估當前運行狀態是否能滿足需求,是否需要對插件進行調整。
- 在多租戶的場景下,對不同租戶資源使用的規划,計量和管控需求日益凸顯,因此需要對多租戶進行租戶級資源監控和公平性檢查。
- 根據用戶運行時間和在各個插件中的調度時間,判斷出用戶的使用場景,根據使用場景自動配置插件,實現智能調度。
監控目標
- 通過定義性能指標 ,定量檢測調度系統的性能,指導開發並且評測出針對不同環境的插件配置建議和解決方案,並且給出評判標准。
- 通過監測系統以及租戶資源使用情況,方便管理員進行協調管理
- 對監控數據做樣本分析和特征分析,訓練最佳調度插件模型,通過性能數據來修正誤差更新模型,逐步完成智能調度。
監控基礎指標設計

監控架構設計

目前在Volcano 中引入了三個監控組件,Kube State Metrics,Prometheus以及Grafana。
在 Kubernetes 體系中傳統數值類時序數據一般是由Prometheus來管理的,狀態類信息和配置類信息都是存在etcd里的,但是有時候需要配合起來完成監控目標,因此就需要將狀態類數據和配置數據導入Prometheus,Kube State Metrics 實現了一個標准的 Prometheus Exporter 來從API Server 獲取狀態數據以及字段配置數據,協助完成狀態數據和時序數據的統一管理。
Grafana 中我們初始化 Provision 了一個 Volcano Overview Dashboard,這個Dashboard包含了Volcano的全局監控信息,包括Volcano的公平性數據以及調度有效性數據。
在Volcano上部署監控套件
在線部署
make generate-yaml TAG=latest RELEASE_DIR=installer
kubectl create -finstaller/volcano-monitoring-latest.yaml
離線部署需要的額外工作
檢查生成好的 installer/volcano-monitoring-latest.yaml 文件,下載yaml中的所有image,推送到離線環境中的鏡像倉庫,並且修改所有image字段指向離線倉庫。
如何使用
登錄 Volcano 的監控面板

在Kubernetes集群中用管理員賬號獲取當前Volcano監控Namespace中的service信息,我們可以看到grafana的NodePort是30004,在集群中任意Node節點上訪問30004端口即可看到Grafana的界面。
第一次登錄需要輸入默認用戶名和密碼admin/admin,后續需要重新設置新密碼,設置完成新密碼,選擇 Volcano Overview Dashboard。
Volcano Job 延遲熱力圖 / Volcano Job 調度延遲排名

通過Volcano Legency Heatmap 我們可以看到當前Job延時發生的具體情況,在集群被打滿的情況下,延時很容易快速達到16秒以上,如果當前集群申請的資源沒有滿,那么可能是沒有配置合理的插件導致的。

通過 Volcano Job Scheduling Legecny 我們可以看到當前運行比較長的Vocalno Job運行時間長度,通過比對Scheduler日志,我們可以逐步找到相應的原因,並且調整插件來優化這個過程。
Volcano 公平性數據

Job Scheduling Coefficient Of Variation 是 Volcano 監控的公平性指標,展示了不同Job調度時間長度之間的差異值,目前的插件策略下,是相對比較極端的,部分Job在非常短的時間內被調度完成,剩余的時間比較長。
Volcano 調度效率數據

通過Volcano調度效率數據,我們可以看到整體集群的資源申請request情況,通過Node Resource Coefficient Of Variation 我們可以看到不同節點之間的資源分布情況。
當前社區進度及未來展望
當前Volcano的性能監控指標KPI並沒有完整到可以支撐我們做樣本和特征分析,為了實現最終的智能調度,現分為以下三個階段實現。
- 通過定義性能指標 ,定量檢測調度系統的性能,指導開發並且評測出針對不同環境的插件配置建議和解決方案,並且給出評判標准。
- 通過監測系統以及租戶資源使用情況,方便管理員進行協調管理
- 對監控數據做樣本分析和特征分析,訓練最佳調度插件模型,通過性能數據來修正誤差更新模型,逐步完成智能調度。
