基于火山引擎 VCI 實(shí)現(xiàn)資源裝箱率提升,助力企業(yè)云成本優(yōu)化

高裝箱率意味著高資源利用率,即表示在可用資源內(nèi),大部分資源都被有效使用,閑置的資源較少,進(jìn)一步而言,支撐相同離線任務(wù)所需投入的資源成本也會更少。

當(dāng)前,隨著公共云使用規(guī)模的擴(kuò)大,如何降低云資源購買成本、提升云資源利用率、優(yōu)化云資產(chǎn)配置以實(shí)現(xiàn)云成本控制、降低 IT 基礎(chǔ)設(shè)施的 TCO(總擁有成本),已經(jīng)成為衡量企業(yè)上云用云成效的關(guān)鍵因素。

根據(jù) Flexera 的《2023 年云狀態(tài)調(diào)查報(bào)告》,企業(yè)平均 32% 的云支出被浪費(fèi),有 71% 的重度云用戶將優(yōu)先考慮優(yōu)化云的現(xiàn)有使用情況以節(jié)省云成本。這包括關(guān)注未使用的云資源成本、不合理配置資源的成本以及折扣/Spot 覆蓋的基礎(chǔ)設(shè)施的比例。

同時(shí),近年來數(shù)據(jù)分析和 AI 大模型服務(wù)的大規(guī)模應(yīng)用,也帶動(dòng)了離線 AI 訓(xùn)練等業(yè)務(wù)場景對計(jì)算資源需求的明顯增長。在這個(gè)背景下,除了進(jìn)一步完善在線業(yè)務(wù)場景下云資源的管理方案,如何保障大數(shù)據(jù)和 AI 場景下各類離線任務(wù)的資源量和使用率,也成了業(yè)界的重要課題。

在線服務(wù) VS 離線任務(wù)

在線服務(wù)和離線任務(wù)的區(qū)別在于它們的處理方式和用途,它們在提升云資源利用率上的關(guān)鍵點(diǎn)也各有側(cè)重。

在企業(yè)場景下,一般都使用基于 Kubernetes 的容器管理平臺管理在線服務(wù)和離線任務(wù)兩種類型的工作負(fù)載。其中在線服務(wù)主要指需要對實(shí)時(shí)數(shù)據(jù)進(jìn)行處理和響應(yīng)的任務(wù),它們通常需要快速的響應(yīng)時(shí)間,并且需要在處理每個(gè)請求時(shí)都重新計(jì)算結(jié)果,常見有實(shí)時(shí)推薦系統(tǒng)、在線廣告投放、在線電商、聊天機(jī)器人等。

在云資源消耗上,這類服務(wù)流量具有明顯峰谷潮汐變化,舉個(gè)例子,下圖顯示了抖音在某個(gè)時(shí)期的在線業(yè)務(wù)流量,波峰波谷間資源利用率的差距可以達(dá)到 40%,如果是春晚、大促等極端流量場景,這個(gè)差值會更大。

640.png

為了使業(yè)務(wù)能安然度過高峰(如節(jié)日活動(dòng)、電商大促等),企業(yè)一般會按照高峰的流量預(yù)估準(zhǔn)備資源。同時(shí)對于這種業(yè)務(wù)對擴(kuò)容延遲非常敏感的情況,Kubernetes 社區(qū)的 Cluster Autoscaler 自動(dòng)擴(kuò)容節(jié)點(diǎn)方案存在 Pod 啟動(dòng)過慢的問題,因此推薦企業(yè)選擇具備快速彈出計(jì)算資源與快速啟用業(yè)務(wù)應(yīng)用的云產(chǎn)品,比如火山引擎彈性容器實(shí)例 VCI,可滿足分鐘級數(shù)萬核 vCPU 計(jì)算資源的需求。

相比之下,離線任務(wù)是指在沒有實(shí)時(shí)數(shù)據(jù)輸入的情況下,對大量數(shù)據(jù)進(jìn)行批量處理的任務(wù),它們通常沒有時(shí)間限制,可以在后臺運(yùn)行,例如大數(shù)據(jù)分析、機(jī)器學(xué)習(xí)的數(shù)據(jù)標(biāo)注和訓(xùn)練作業(yè)、科學(xué)計(jì)算、日志分析、數(shù)據(jù)清洗等。這些任務(wù)通常涉及到大量的數(shù)據(jù)處理和計(jì)算,因此需要強(qiáng)大的計(jì)算能力和存儲能力來支持。

仍以字節(jié)跳動(dòng)為例,截至 2023 年,字節(jié)跳動(dòng)離線訓(xùn)練的框架拓?fù)淇梢赃_(dá)到每天 10000 任務(wù)的量級,有約 160 萬核的離線訓(xùn)練作業(yè)被部署在 Kubernetes 集群上(占總訓(xùn)練量的 40%)。下圖展示了某業(yè)務(wù)團(tuán)隊(duì)離線任務(wù)的 CPU 使用率情況,可以看到,這些任務(wù)的運(yùn)行時(shí)間較短,在幾十分鐘左右,雖然在凌晨等在線服務(wù)的流量波谷時(shí)段有運(yùn)行高峰,但整體在時(shí)間上還是呈現(xiàn)不確定性。

640 (1).png

對于這類任務(wù),提升資源利用率的難點(diǎn)在于如何提前預(yù)備不定時(shí)進(jìn)行的離線任務(wù)所需要的資源,同時(shí)在任務(wù)運(yùn)行結(jié)束后快速回收資源,即提升整體裝箱率(Bin Packing Efficiency)——通過在集群中有效地分配資源,以最小化運(yùn)行工作負(fù)載所需的節(jié)點(diǎn)數(shù)量。

VCI 助力離線任務(wù)場景降本增效

彈性容器實(shí)例 VCI 是火山引擎云原生團(tuán)隊(duì)基于字節(jié)跳動(dòng)內(nèi)部深度實(shí)踐,推出的一種無服務(wù)器 Serverless 和容器化的計(jì)算服務(wù),通過 Virtual Kubelet 技術(shù)與火山引擎容器服務(wù) VKE 無縫結(jié)合,提供彈性計(jì)算和 Kubernetes 編排能力。它能通過免運(yùn)維、免規(guī)劃以及按量付費(fèi)的方式,幫助用戶降低使用成本。

關(guān)鍵概念:裝箱率

面對離線業(yè)務(wù)場景,彈性容器實(shí)例 VCI 具有諸多天然優(yōu)勢,其中最關(guān)鍵的是彈性容器所帶來的資源成本優(yōu)勢。

在分析 Kubernetes 架構(gòu)中離線業(yè)務(wù)的資源成本時(shí),理解裝箱率這一概念是至關(guān)重要的。通常而言,裝箱率指的是在給定資源容量限制下,實(shí)際使用的資源量占總可用資源量的比例,是衡量資源利用率的重要指標(biāo)。

在 Kubernetes 集群中,裝箱率往往用于衡量工作負(fù)載(容器化應(yīng)用)實(shí)際占用的計(jì)算資源(CPU、內(nèi)存等)與節(jié)點(diǎn)總計(jì)算資源容量之間的比率,可以通過將節(jié)點(diǎn)上所有 Pod 的資源請求(Requests)之和除以節(jié)點(diǎn)的總資源容量來計(jì)算。高裝箱率意味著高資源利用率,即表示在可用資源內(nèi),大部分資源都被有效使用,閑置的資源較少,進(jìn)一步而言,支撐相同離線任務(wù)所需投入的資源成本也會更少。

離線任務(wù)場景下的計(jì)算資源浪費(fèi)

在介紹彈性容器 VCI 如何支撐離線業(yè)務(wù)場景降低資源成本之前,我們首先簡單討論在傳統(tǒng)以云服務(wù)器節(jié)點(diǎn)為中心的 Kubernetes 集群架構(gòu)中運(yùn)行容器化的離線業(yè)務(wù)應(yīng)用時(shí)造成計(jì)算資源浪費(fèi)的幾個(gè)關(guān)鍵因素:

必須為系統(tǒng)預(yù)留資源:Kubernetes 為了保證云服務(wù)器節(jié)點(diǎn)具有充足的資源支撐系統(tǒng)進(jìn)程與核心組件的穩(wěn)定運(yùn)行,需要在每個(gè)節(jié)點(diǎn)上進(jìn)行計(jì)算資源預(yù)留,即便預(yù)留資源在大多數(shù)時(shí)間內(nèi)實(shí)際上處于閑置狀態(tài),也無法被普通工作負(fù)載使用,這將導(dǎo)致集群整體裝箱率的下降,特別是在資源緊張的環(huán)境中,未利用的預(yù)留資源可能會成為瓶頸。此外,云服務(wù)器規(guī)格越大,所需要預(yù)留的計(jì)算資源也會越多,造成的資源閑置浪費(fèi)情況也越嚴(yán)重。

離線任務(wù)難以合理利用節(jié)點(diǎn)資源:這個(gè)問題有以下三種常規(guī)場景:

● 首先,不同任務(wù)對于計(jì)算資源(CPU、內(nèi)存等)的需求差異較大,而受限于云服務(wù)器較為固定的 CPU、內(nèi)存規(guī)格情況,難以實(shí)現(xiàn)“完美匹配”,從而極為可能導(dǎo)致某些計(jì)算資源在特定云服務(wù)器節(jié)點(diǎn)上過剩,但卻無法被其他任務(wù)利用,從而導(dǎo)致整體資源裝箱率較低;

● 其次,不同離線任務(wù)運(yùn)行的啟動(dòng)和結(jié)束時(shí)間不同,極有可能導(dǎo)致云服務(wù)器產(chǎn)生資源“碎片”,即小塊未被利用的資源分布在不同的云服務(wù)器上,往往難以被新的離線任務(wù)有效利用;

● 最后,某些業(yè)務(wù)場景下,離線任務(wù)之間存在依賴關(guān)系或者優(yōu)先級差異,這意味著某些任務(wù)往往需要等待其他任務(wù)完成之后才能啟動(dòng),這種依賴性進(jìn)一步加劇了云服務(wù)器資源利用率的挑戰(zhàn)。

需要為任務(wù)執(zhí)行周期之外的“時(shí)間”買單:云資源的成本開銷一般可以通過“所需資源量 * 使用時(shí)間”進(jìn)行衡量,在認(rèn)為所需資源量不變的情況下,盡量壓縮資源的使用時(shí)間,也可以有效降低成本。對于離線業(yè)務(wù)而言,真正需要計(jì)算資源其實(shí)是任務(wù)從啟動(dòng)到執(zhí)行結(jié)束的這段時(shí)間,這段時(shí)間也稱為“業(yè)務(wù)實(shí)際運(yùn)行時(shí)間”,理想的情況是只為所用計(jì)算資源的“業(yè)務(wù)實(shí)際運(yùn)行時(shí)間”付費(fèi),而在以云服務(wù)器節(jié)點(diǎn)為中心的 Kubernetes 集群架構(gòu)中,一方面需要額外為離線任務(wù)的前置部署階段和后置停止階段付費(fèi);另一方面還可能因?yàn)榧汗?jié)點(diǎn)彈性伸縮策略所導(dǎo)致的頻繁對云服務(wù)器初始化所花費(fèi)的時(shí)間買單。

具體案例

接下來我們以一個(gè)簡化的離線任務(wù)場景為例,通過對比常規(guī)云服務(wù)器節(jié)點(diǎn)和彈性容器實(shí)例的資源使用情況,幫助大家更加直觀地理解彈性容器 VCI 如何降低資源使用成本:

假設(shè) Kubernetes 集群中可使用的云服務(wù)器節(jié)點(diǎn)規(guī)格均為 4C-8Gi,3 個(gè)離線任務(wù)對應(yīng)的 Pod 資源需求均為 2C-4Gi,而且在不同的時(shí)間點(diǎn)(第 0 秒和第 10 秒)調(diào)度到集群中開始執(zhí)行,以此來分析資源裝箱率情況。

640 (2).png

首先,根據(jù)節(jié)點(diǎn)預(yù)留資源策略(www.volcengine.com/docs/6460/144563),可明確計(jì)算出每個(gè) 4C-8Gi 規(guī)格的云服務(wù)所需要預(yù)留的資源為 0.1C-1.8Gi(此處未包括 Daemonset 類型系統(tǒng)組件的資源占用。實(shí)際上,系統(tǒng)組件的資源需求取決于集群中安裝的具體組件,通常每個(gè)節(jié)點(diǎn)需要至少 0.5C-0.5Gi 資源用于系統(tǒng)組件),因此每個(gè)節(jié)點(diǎn)均只能承載單個(gè) 2C-4Gi 資源需求的 Pod,剩余 1.9C-2.2Gi 資源處于閑置浪費(fèi)狀態(tài)。這意味著對于每個(gè)云服務(wù)器節(jié)點(diǎn)而言,其裝箱率僅為 50%,值得一提的是真實(shí)場景下 Kubernetes 集群中云服務(wù)器節(jié)點(diǎn)的裝箱率也約為 50%。

其次,在時(shí)間軸的前 10 秒,集群中運(yùn)行了 2 臺 4C-8Gi 的云服務(wù)器,共有 3.8C-4.4Gi 的閑置資源(2 * 1.9C-2.2Gi)。當(dāng)來到時(shí)間軸的第 10 秒,同樣需要 2C-4Gi 資源的 Pod 3 開始執(zhí)行,此時(shí)即便集群中的閑置資源總量足夠,卻也因?yàn)榉謱儆趦蓚€(gè)“碎片”而無法支撐 Pod 3 的運(yùn)行,只能再啟動(dòng)一個(gè)新的云服務(wù)器節(jié)點(diǎn),從而使得閑置浪費(fèi)資源進(jìn)一步增多??傮w而言,在暫不考慮節(jié)點(diǎn)初始化時(shí)間等因素的情況下,運(yùn)行 60C*秒-120Gi*秒的離線任務(wù),卻需要為此消耗 120C*秒-240Gi*秒的云服務(wù)器計(jì)算資源。

而如果使用彈性容器實(shí)例 VCI 運(yùn)行上述任務(wù),用戶只需為實(shí)際運(yùn)行中的業(yè)務(wù)所占用的計(jì)算資源付費(fèi),Pod 需要何種規(guī)格的計(jì)算資源只需要?jiǎng)?chuàng)建對應(yīng)規(guī)格的彈性容器實(shí)例 VCI 即可,裝箱率可達(dá)到 100%,運(yùn)行 60C*秒-120Gi*秒的離線任務(wù),也只需要 60C*秒-120Gi*秒的彈性容器計(jì)算資源即可,無任何資源閑置浪費(fèi)。

從下圖的實(shí)際生產(chǎn)案例監(jiān)控曲線中,也能夠非常直觀地看出彈性容器實(shí)例 VCI 的高裝箱率所帶來的資源成本節(jié)省優(yōu)勢。

640 (3).png

使用云服務(wù)器:存在大量閑置資源

640 (4).png

使用 VCI:完全按需使用

面對離線業(yè)務(wù)場景,彈性容器實(shí)例 VCI 除了具備資源成本優(yōu)勢之外,也能幫助客戶進(jìn)一步降低企業(yè)云上架構(gòu)的計(jì)算資源運(yùn)維成本。彈性容器 VCI 通過與容器服務(wù) VKE 無縫集成,同時(shí)實(shí)現(xiàn)了 Kubernetes 集群控制平面全托管和數(shù)據(jù)平面的 Serverless 化全托管、免運(yùn)維、安全隔離,極大地降低用戶在 Kubernetes 基礎(chǔ)設(shè)施上的運(yùn)維成本,并且省去了容量規(guī)劃的復(fù)雜性,幫助用戶聚焦于自己的業(yè)務(wù)應(yīng)用。

● 接入成本:彈性容器 VCI 兼容 Kubernetes 的使用方式,用戶只需適配 Kubernetes 就可以達(dá)到一次開發(fā),到處運(yùn)行的效果。此外,借助于 VCI Profile 配置文件等能力可以支持在業(yè)務(wù)無侵入的情況下使用彈性容器作為算力資源(www.volcengine.com/docs/6460/1209385);

● 運(yùn)維成本:用戶無需管理特定的資源,彈性容器 VCI 提供安全可靠的容器計(jì)算資源,用戶無需關(guān)注系統(tǒng)的升級、安全補(bǔ)丁以及故障恢復(fù)等各種問題;

● 算力成本:彈性容器 VCI 基于火山引擎海量計(jì)算資源,讓用戶無需為沒有使用的資源付費(fèi),例如為了保障資源供給而提前購買資源、為少量任務(wù)而購買過量的資源等。

實(shí)際客戶落地案例

某客戶是一家以智能化、自動(dòng)化驅(qū)動(dòng)的藥物研發(fā)科技公司,為全球生物醫(yī)藥企業(yè)提供藥物發(fā)現(xiàn)一體化解決方案。作為 AI 制藥領(lǐng)域的龍頭企業(yè),該客戶使用了多云架構(gòu),單個(gè)鏡像超過 20G,經(jīng)常需要同時(shí)拉起超過 500 個(gè)節(jié)點(diǎn),所以其對算力的性價(jià)比要求極高。

火山引擎云原生團(tuán)隊(duì)和客戶合作構(gòu)建的云原生基礎(chǔ)設(shè)施,通過 VCI 極速彈性伸縮和超高資源利用率的特性,實(shí)現(xiàn)秒級拉起萬核 CPU 資源,保障高峰期客戶的算力需要;通過鏡像預(yù)熱、鏡像緩存、P2P 傳輸?shù)裙δ?,?shí)現(xiàn)超大鏡像秒級加載,實(shí)現(xiàn)了數(shù)千 Pod 分鐘級自動(dòng)擴(kuò)縮容,充分助力 AI 提速;通過 VCI+VKE 資源成本控制,幫助客戶將集群裝箱率提升到 95% 以上。

結(jié)語

面向未來,上云仍是全球范圍內(nèi)的廣泛趨勢,根據(jù) Gartner 的研究報(bào)告,企業(yè)在公共云上的 IT 支出將超過傳統(tǒng) IT 支出,到 2025 年,51% 的 IT 預(yù)算將用于基于云的系統(tǒng)開發(fā)和運(yùn)營。

通過彈性容器實(shí)例 VCI,火山引擎云原生團(tuán)隊(duì)希望能幫助更多企業(yè)解決上好云、用好云的難題,提供基礎(chǔ)設(shè)施免運(yùn)維、計(jì)算資源免規(guī)劃、極致彈性的 Serverless 容器化產(chǎn)品與服務(wù),讓云資源真正為企業(yè)業(yè)務(wù)帶來效益。

原創(chuàng)文章,作者:陳晨,如若轉(zhuǎn)載,請注明出處:http://2079x.cn/article/639030.html

陳晨陳晨管理團(tuán)隊(duì)

相關(guān)推薦

發(fā)表回復(fù)

登錄后才能評論