了解金山云最新資訊
2023-09-15 00:00:00
根據Gartner數據統(tǒng)計,2023年全球IT支出預計將達到4.7萬億美元,比2022年增長4.3%。然而,該機構另一項調查數據顯示,全球數據中心服務器CPU利用率只有6%~12%。如何提升服務器資源利用率,降低IT基礎設施的總擁有成本(TCO),從而實現(xiàn)降本增效,成為企業(yè)發(fā)展過程中的重要議題。
在此背景下,金山云推出在離線混部解決方案Colocation(以下簡稱“Colo”),該方案在知乎已完成大規(guī)模集群驗證,集群資源利用率得到有效提升。通過在隔離類型上采用共享物理機內核、部署底座上采用容器部署、調度決策上采用動態(tài)決策,Colo具備6大功能特色,包括調度、重調度、資源隔離與限制、資源沖突檢測與處理、可觀測性以及節(jié)點實際負載查詢API等。
Colo的系統(tǒng)架構
從系統(tǒng)架構層面看,在離線混部解決方案Colo主要分為5個層級,主要包括基礎組件、資源管理和調度、節(jié)點管控、存儲管理以及系統(tǒng)隔離。其中值得一提的是,Colo在資源調度側增強了調度器相應的擴展能力,將調度器擴展為Colo-Manager、Colo-Scheuler、Colo-Descheuler,并在節(jié)點管控側提供了cololet組件(如下圖)。
在該方案中,Colo-Manager負責node節(jié)點cololet agent配置同步,例如BE任務內存&CPU分配比例、開啟某項資源壓制開關等,以及Node resource計算工作。
Colo-Scheuler負責在線和離線應用調度,擴展負載均衡調度(包含CPU、Memory、CPI干擾)、重調度預調度(重調度驅逐時的安全策略)、ColocationFit插件。
Colo-Descheuler是一款重調度器,可擴展負載均衡調度插件。主要應用于實時運行過程中,二次調度pod,擴展高級防護策略,按照Node、Namespace、Workload進行保護。
Cololet是節(jié)點級調度器,主要負責Pod的QoS保障。提供細粒度的資源使用指標、內核指標等監(jiān)控指標的采集,實際負載數據的采集與保存,CPU、內存、BlkIO、Network等資源的沖突檢測與動態(tài)調整,以及干擾探測等功能。
Colo的六大工作原理
01 Colo-scheduler調度器
Colo-scheduler是基于社區(qū)scheduler framework框架開發(fā)的調度器,能夠擴展感知離線資源可用量與在離線業(yè)務均衡分布的能力。根據Node節(jié)點實際負載指標計算得分并進行排序,為各個資源設置不同的權重值,實際剩余資源越多則得分越高,使得Pod在集群節(jié)點之間按照實際負載均衡分布。
其離線可用資源計算公式為:
離線可用資源 = 節(jié)點總可用資源 - 節(jié)點預留資源 - 系統(tǒng)已使用資源 - 在線任務實際使用資源
Node(BE).Alloc = Node.Total - Node.Reserved - System.Used - Pod(LS).Used
02 Descheduler重調度器
重調度器定期檢測集群狀態(tài),對不符合預期的情況進行動態(tài)調整,使集群始終處于健康狀態(tài)。例如:當Node節(jié)點上Pod數量超過閾值或當某個Namespace中的Pod數量超過閾值時,均會觸發(fā)Pod遷移;將Pod從實際利用率過高的節(jié)點遷移到利用率不足的節(jié)點;驅逐違反node affinity的Pod。
03 資源隔離
對CPU、Memory、blkio、網絡帶寬等資源維度進行隔離。
04 沖突檢測和處理
05 eBPF內核監(jiān)控指標采集
使用ebpf的方式采集以下5種內核監(jiān)控指標,包括:
06 NUMA調度
NUMA(非一致性內存訪問)調度通過CPU分配策略與內存分配策略,最大化保證業(yè)務進程CPU訪問內存的性能。
Colo資源分配與調度策略
Priority(調度優(yōu)先級)
Colo將Priority(調度優(yōu)先級)分為colo-prod/colo-mid/colo-batchBatch/colo-free四個等級,優(yōu)先級依次遞減,Pod Yaml中指定申請的資源優(yōu)先級,colo-scheduler會基于總量和分配量做調度。具體如下:
QoS(服務質量)
Colo將 QoS(服務質量)整體分為 System(系統(tǒng)級服務)、Latency Sensitive(延遲敏感性的在線服務)及Best Effort(資源消耗型的離線任務)三類,根據應用性能敏感程度的差異,Latency Sensitive 又細分為 LSE、LSR 和 LS。具體如下:
Priority與QoS關系描述
在 Priority 和 QoS 的使用上,二者整體是正交的兩個維度,可以排列組合使用。不過受模型定義和實際的需求情況影響,部分排列組合存在約束。因此,建議的組合方式如下:
Colo使用場景及使用方式
在使用Colo調度系統(tǒng)進行在離線業(yè)務混部時,根據不同業(yè)務場景可通過配置Priority與QoS的關鍵字段colo.sh/qosClass與priorityClassName字段進行匹配部署。
典型場景:
典型場景的增強:
Colo的落地實踐
目前,金山云與知乎聯(lián)合共建的Colo方案已在知乎完成了大規(guī)模部署,實現(xiàn)了大部分核心業(yè)務的落地,助力其混部集群利用率均值顯著提升。
Colo的三大產品優(yōu)勢
在落地實踐中,Colo展現(xiàn)出以下三個產品優(yōu)勢:
01 顯著提升資源利用率
在保證服務穩(wěn)定性的基礎上有效利用資源,集群平均利用率顯著提升。
02 兼顧靈活調度與服務穩(wěn)定
通過可觀測性體系、動態(tài)決策、資源隔離、資源沖突檢測與處理、調度等控制手段,充分保證混部服務穩(wěn)定性。
03 豐富的策略支持
彌補原項目資源預測、blkio/網絡帶寬限制、沖突檢測能力、內存回收上的不足,額外支持eBPF內核指標采集、numa調度、節(jié)點實際負載查詢API等功能。
未來,混合部署將隨著技術的發(fā)展而逐漸豐富,而金山云還將在提升資源利用率的宗旨下,基于容器調度場景,對Colo的功能特性持續(xù)進行優(yōu)化和升級。