高裝箱率意味著高資源利用率,即表示在可用資源內,大部分資源都被有效使用,閑置的資源較少,進一步而言,支撐相同離線任務所需投入的資源成本也會更少。
當前,隨著公共云使用規(guī)模的擴大,如何降低云資源購買成本、提升云資源利用率、優(yōu)化云資產配置以實現(xiàn)云成本控制、降低 IT 基礎設施的 TCO(總擁有成本),已經成為衡量企業(yè)上云用云成效的關鍵因素。
根據 Flexera 的《2023 年云狀態(tài)調查報告》,企業(yè)平均 32% 的云支出被浪費,有 71% 的重度云用戶將優(yōu)先考慮優(yōu)化云的現(xiàn)有使用情況以節(jié)省云成本。這包括關注未使用的云資源成本、不合理配置資源的成本以及折扣/Spot 覆蓋的基礎設施的比例。
同時,近年來數(shù)據分析和 AI 大模型服務的大規(guī)模應用,也帶動了離線 AI 訓練等業(yè)務場景對計算資源需求的明顯增長。在這個背景下,除了進一步完善在線業(yè)務場景下云資源的管理方案,如何保障大數(shù)據和 AI 場景下各類離線任務的資源量和使用率,也成了業(yè)界的重要課題。
在線服務 VS 離線任務
在線服務和離線任務的區(qū)別在于它們的處理方式和用途,它們在提升云資源利用率上的關鍵點也各有側重。
在企業(yè)場景下,一般都使用基于 Kubernetes 的容器管理平臺管理在線服務和離線任務兩種類型的工作負載。其中在線服務主要指需要對實時數(shù)據進行處理和響應的任務,它們通常需要快速的響應時間,并且需要在處理每個請求時都重新計算結果,常見有實時推薦系統(tǒng)、在線廣告投放、在線電商、聊天機器人等。
在云資源消耗上,這類服務流量具有明顯峰谷潮汐變化,舉個例子,下圖顯示了抖音在某個時期的在線業(yè)務流量,波峰波谷間資源利用率的差距可以達到 40%,如果是春晚、大促等極端流量場景,這個差值會更大。

為了使業(yè)務能安然度過高峰(如節(jié)日活動、電商大促等),企業(yè)一般會按照高峰的流量預估準備資源。同時對于這種業(yè)務對擴容延遲非常敏感的情況,Kubernetes 社區(qū)的 Cluster Autoscaler 自動擴容節(jié)點方案存在 Pod 啟動過慢的問題,因此推薦企業(yè)選擇具備快速彈出計算資源與快速啟用業(yè)務應用的云產品,比如火山引擎彈性容器實例 VCI,可滿足分鐘級數(shù)萬核 vCPU 計算資源的需求。
相比之下,離線任務是指在沒有實時數(shù)據輸入的情況下,對大量數(shù)據進行批量處理的任務,它們通常沒有時間限制,可以在后臺運行,例如大數(shù)據分析、機器學習的數(shù)據標注和訓練作業(yè)、科學計算、日志分析、數(shù)據清洗等。這些任務通常涉及到大量的數(shù)據處理和計算,因此需要強大的計算能力和存儲能力來支持。
仍以字節(jié)跳動為例,截至 2023 年,字節(jié)跳動離線訓練的框架拓撲可以達到每天 10000 任務的量級,有約 160 萬核的離線訓練作業(yè)被部署在 Kubernetes 集群上(占總訓練量的 40%)。下圖展示了某業(yè)務團隊離線任務的 CPU 使用率情況,可以看到,這些任務的運行時間較短,在幾十分鐘左右,雖然在凌晨等在線服務的流量波谷時段有運行高峰,但整體在時間上還是呈現(xiàn)不確定性。

對于這類任務,提升資源利用率的難點在于如何提前預備不定時進行的離線任務所需要的資源,同時在任務運行結束后快速回收資源,即提升整體裝箱率(Bin Packing Efficiency)——通過在集群中有效地分配資源,以最小化運行工作負載所需的節(jié)點數(shù)量。
VCI 助力離線任務場景降本增效
彈性容器實例 VCI 是火山引擎云原生團隊基于字節(jié)跳動內部深度實踐,推出的一種無服務器 Serverless 和容器化的計算服務,通過 Virtual Kubelet 技術與火山引擎容器服務 VKE 無縫結合,提供彈性計算和 Kubernetes 編排能力。它能通過免運維、免規(guī)劃以及按量付費的方式,幫助用戶降低使用成本。
關鍵概念:裝箱率
面對離線業(yè)務場景,彈性容器實例 VCI 具有諸多天然優(yōu)勢,其中最關鍵的是彈性容器所帶來的資源成本優(yōu)勢。
在分析 Kubernetes 架構中離線業(yè)務的資源成本時,理解裝箱率這一概念是至關重要的。通常而言,裝箱率指的是在給定資源容量限制下,實際使用的資源量占總可用資源量的比例,是衡量資源利用率的重要指標。
在 Kubernetes 集群中,裝箱率往往用于衡量工作負載(容器化應用)實際占用的計算資源(CPU、內存等)與節(jié)點總計算資源容量之間的比率,可以通過將節(jié)點上所有 Pod 的資源請求(Requests)之和除以節(jié)點的總資源容量來計算。高裝箱率意味著高資源利用率,即表示在可用資源內,大部分資源都被有效使用,閑置的資源較少,進一步而言,支撐相同離線任務所需投入的資源成本也會更少。
離線任務場景下的計算資源浪費
在介紹彈性容器 VCI 如何支撐離線業(yè)務場景降低資源成本之前,我們首先簡單討論在傳統(tǒng)以云服務器節(jié)點為中心的 Kubernetes 集群架構中運行容器化的離線業(yè)務應用時造成計算資源浪費的幾個關鍵因素:
必須為系統(tǒng)預留資源:Kubernetes 為了保證云服務器節(jié)點具有充足的資源支撐系統(tǒng)進程與核心組件的穩(wěn)定運行,需要在每個節(jié)點上進行計算資源預留,即便預留資源在大多數(shù)時間內實際上處于閑置狀態(tài),也無法被普通工作負載使用,這將導致集群整體裝箱率的下降,特別是在資源緊張的環(huán)境中,未利用的預留資源可能會成為瓶頸。此外,云服務器規(guī)格越大,所需要預留的計算資源也會越多,造成的資源閑置浪費情況也越嚴重。
離線任務難以合理利用節(jié)點資源:這個問題有以下三種常規(guī)場景:
● 首先,不同任務對于計算資源(CPU、內存等)的需求差異較大,而受限于云服務器較為固定的 CPU、內存規(guī)格情況,難以實現(xiàn)“完美匹配”,從而極為可能導致某些計算資源在特定云服務器節(jié)點上過剩,但卻無法被其他任務利用,從而導致整體資源裝箱率較低;
● 其次,不同離線任務運行的啟動和結束時間不同,極有可能導致云服務器產生資源“碎片”,即小塊未被利用的資源分布在不同的云服務器上,往往難以被新的離線任務有效利用;
● 最后,某些業(yè)務場景下,離線任務之間存在依賴關系或者優(yōu)先級差異,這意味著某些任務往往需要等待其他任務完成之后才能啟動,這種依賴性進一步加劇了云服務器資源利用率的挑戰(zhàn)。
需要為任務執(zhí)行周期之外的“時間”買單:云資源的成本開銷一般可以通過“所需資源量 * 使用時間”進行衡量,在認為所需資源量不變的情況下,盡量壓縮資源的使用時間,也可以有效降低成本。對于離線業(yè)務而言,真正需要計算資源其實是任務從啟動到執(zhí)行結束的這段時間,這段時間也稱為“業(yè)務實際運行時間”,理想的情況是只為所用計算資源的“業(yè)務實際運行時間”付費,而在以云服務器節(jié)點為中心的 Kubernetes 集群架構中,一方面需要額外為離線任務的前置部署階段和后置停止階段付費;另一方面還可能因為集群節(jié)點彈性伸縮策略所導致的頻繁對云服務器初始化所花費的時間買單。
具體案例
接下來我們以一個簡化的離線任務場景為例,通過對比常規(guī)云服務器節(jié)點和彈性容器實例的資源使用情況,幫助大家更加直觀地理解彈性容器 VCI 如何降低資源使用成本:
假設 Kubernetes 集群中可使用的云服務器節(jié)點規(guī)格均為 4C-8Gi,3 個離線任務對應的 Pod 資源需求均為 2C-4Gi,而且在不同的時間點(第 0 秒和第 10 秒)調度到集群中開始執(zhí)行,以此來分析資源裝箱率情況。

首先,根據節(jié)點預留資源策略(www.volcengine.com/docs/6460/144563),可明確計算出每個 4C-8Gi 規(guī)格的云服務所需要預留的資源為 0.1C-1.8Gi(此處未包括 Daemonset 類型系統(tǒng)組件的資源占用。實際上,系統(tǒng)組件的資源需求取決于集群中安裝的具體組件,通常每個節(jié)點需要至少 0.5C-0.5Gi 資源用于系統(tǒng)組件),因此每個節(jié)點均只能承載單個 2C-4Gi 資源需求的 Pod,剩余 1.9C-2.2Gi 資源處于閑置浪費狀態(tài)。這意味著對于每個云服務器節(jié)點而言,其裝箱率僅為 50%,值得一提的是真實場景下 Kubernetes 集群中云服務器節(jié)點的裝箱率也約為 50%。
其次,在時間軸的前 10 秒,集群中運行了 2 臺 4C-8Gi 的云服務器,共有 3.8C-4.4Gi 的閑置資源(2 * 1.9C-2.2Gi)。當來到時間軸的第 10 秒,同樣需要 2C-4Gi 資源的 Pod 3 開始執(zhí)行,此時即便集群中的閑置資源總量足夠,卻也因為分屬于兩個“碎片”而無法支撐 Pod 3 的運行,只能再啟動一個新的云服務器節(jié)點,從而使得閑置浪費資源進一步增多??傮w而言,在暫不考慮節(jié)點初始化時間等因素的情況下,運行 60C*秒-120Gi*秒的離線任務,卻需要為此消耗 120C*秒-240Gi*秒的云服務器計算資源。
而如果使用彈性容器實例 VCI 運行上述任務,用戶只需為實際運行中的業(yè)務所占用的計算資源付費,Pod 需要何種規(guī)格的計算資源只需要創(chuàng)建對應規(guī)格的彈性容器實例 VCI 即可,裝箱率可達到 100%,運行 60C*秒-120Gi*秒的離線任務,也只需要 60C*秒-120Gi*秒的彈性容器計算資源即可,無任何資源閑置浪費。
從下圖的實際生產案例監(jiān)控曲線中,也能夠非常直觀地看出彈性容器實例 VCI 的高裝箱率所帶來的資源成本節(jié)省優(yōu)勢。

使用云服務器:存在大量閑置資源

使用 VCI:完全按需使用
面對離線業(yè)務場景,彈性容器實例 VCI 除了具備資源成本優(yōu)勢之外,也能幫助客戶進一步降低企業(yè)云上架構的計算資源運維成本。彈性容器 VCI 通過與容器服務 VKE 無縫集成,同時實現(xiàn)了 Kubernetes 集群控制平面全托管和數(shù)據平面的 Serverless 化全托管、免運維、安全隔離,極大地降低用戶在 Kubernetes 基礎設施上的運維成本,并且省去了容量規(guī)劃的復雜性,幫助用戶聚焦于自己的業(yè)務應用。
● 接入成本:彈性容器 VCI 兼容 Kubernetes 的使用方式,用戶只需適配 Kubernetes 就可以達到一次開發(fā),到處運行的效果。此外,借助于 VCI Profile 配置文件等能力可以支持在業(yè)務無侵入的情況下使用彈性容器作為算力資源(www.volcengine.com/docs/6460/1209385);
● 運維成本:用戶無需管理特定的資源,彈性容器 VCI 提供安全可靠的容器計算資源,用戶無需關注系統(tǒng)的升級、安全補丁以及故障恢復等各種問題;
● 算力成本:彈性容器 VCI 基于火山引擎海量計算資源,讓用戶無需為沒有使用的資源付費,例如為了保障資源供給而提前購買資源、為少量任務而購買過量的資源等。
實際客戶落地案例
某客戶是一家以智能化、自動化驅動的藥物研發(fā)科技公司,為全球生物醫(yī)藥企業(yè)提供藥物發(fā)現(xiàn)一體化解決方案。作為 AI 制藥領域的龍頭企業(yè),該客戶使用了多云架構,單個鏡像超過 20G,經常需要同時拉起超過 500 個節(jié)點,所以其對算力的性價比要求極高。
火山引擎云原生團隊和客戶合作構建的云原生基礎設施,通過 VCI 極速彈性伸縮和超高資源利用率的特性,實現(xiàn)秒級拉起萬核 CPU 資源,保障高峰期客戶的算力需要;通過鏡像預熱、鏡像緩存、P2P 傳輸?shù)裙δ?,實現(xiàn)超大鏡像秒級加載,實現(xiàn)了數(shù)千 Pod 分鐘級自動擴縮容,充分助力 AI 提速;通過 VCI+VKE 資源成本控制,幫助客戶將集群裝箱率提升到 95% 以上。
結語
面向未來,上云仍是全球范圍內的廣泛趨勢,根據 Gartner 的研究報告,企業(yè)在公共云上的 IT 支出將超過傳統(tǒng) IT 支出,到 2025 年,51% 的 IT 預算將用于基于云的系統(tǒng)開發(fā)和運營。
通過彈性容器實例 VCI,火山引擎云原生團隊希望能幫助更多企業(yè)解決上好云、用好云的難題,提供基礎設施免運維、計算資源免規(guī)劃、極致彈性的 Serverless 容器化產品與服務,讓云資源真正為企業(yè)業(yè)務帶來效益。
原創(chuàng)文章,作者:陳晨,如若轉載,請注明出處:http://m.2079x.cn/article/639030.html