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