火山引擎彈性容器實例:從節(jié)點中心轉(zhuǎn)型 Serverless 化架構(gòu)的利器
在 Kubernetes 和容器化技術(shù)愈發(fā)成熟的今日,越來越多企業(yè)開始將業(yè)務(wù)應(yīng)用遷移到云上,采用云原生架構(gòu)支持業(yè)務(wù)高速穩(wěn)定地發(fā)展。
而隨著云計算向開發(fā)流程縱深發(fā)展,Serverless 架構(gòu)的成熟讓云原生技術(shù)進入全新階段——Serverless 把公有云彈性伸縮、免運維、快速接入等特性發(fā)揮到了極致,極大降低了用戶的使用成本,讓用戶和企業(yè)只需要專注于其業(yè)務(wù)邏輯,實現(xiàn)真正意義上的敏捷開發(fā)。
為了更好幫助企業(yè)業(yè)務(wù)應(yīng)用真正踐行 Serverless 化的新型云原生思想,火山引擎云原生團隊正在從理念、系統(tǒng)設(shè)計、架構(gòu)設(shè)計等多方面推進產(chǎn)品的升級和創(chuàng)新,以充分發(fā)揮 Serverless 的優(yōu)勢及價值。
從節(jié)點中心到 Serverless 化架構(gòu)
傳統(tǒng) Kubernetes 架構(gòu)一般以節(jié)點為中心,即技術(shù)團隊需要基于云服務(wù)器等資源節(jié)點搭建集群,并圍繞節(jié)點進行運維管理的傳統(tǒng) Kubernetes 集群架構(gòu)。
隨著業(yè)務(wù)規(guī)模的擴大和節(jié)點數(shù)的增加,這種架構(gòu)在容器應(yīng)用的部署和運行等方面往往存在諸多局限性,主要表現(xiàn)在以下幾個方面:
- 節(jié)點運維復雜:用戶需要自行管理和維護節(jié)點,具體包括節(jié)點的配置與初始化、操作系統(tǒng)更新與升級、安全性管理、運行監(jiān)控與日志采集分析、故障恢復、網(wǎng)絡(luò)管理、存儲管理、擴縮容、資源規(guī)劃與分配,以及資源成本管理等復雜且繁瑣的節(jié)點運維工作;
- 資源利用率低:節(jié)點預(yù)留固定資源,即便實際工作負載所需資源量較少,也無法降低節(jié)點資源占用;節(jié)點資源碎片率較高,分布在各個節(jié)點之上的部分未使用的資源難以被有效聚合,無法充分利用;資源過度分配,為了避免性能瓶頸,往往傾向于按照最大負載規(guī)劃資源,難以預(yù)測實際需求,可能造成大量資源閑置;
- 資源擴容速度慢:容器應(yīng)用可能會經(jīng)歷突發(fā)流量,需要快速擴展以響應(yīng)增加的負載。在傳統(tǒng)以節(jié)點為中心的架構(gòu)中,計算資源的擴展往往需要創(chuàng)建和配置新的云服務(wù)器節(jié)點,這個過程可能需要幾分鐘,無法實現(xiàn)即時擴展。
火山引擎彈性容器實例(Volcengine Container Instance,簡稱 VCI)是針對上述情況推出的新型云原生方案,它抽象自字節(jié)跳動內(nèi)部多年云原生技術(shù)積累,是一種 Serverless 和容器化的計算服務(wù)——
通過 Virtual Kubelet 技術(shù)與火山引擎容器服務(wù) VKE 無縫結(jié)合,彈性容器實例 VCI 可以為用戶提供彈性計算和 Kubernetes 編排能力,支持秒級啟動、高并發(fā)創(chuàng)建、沙箱容器安全隔離。
通過融合 Serverless 和容器的優(yōu)勢,彈性容器實例 VCI 能為企業(yè)提供一個高效、可靠和安全的運行環(huán)境,使用戶能夠?qū)W⒂陂_發(fā)和運行云原生架構(gòu)的應(yīng)用程序,而無需關(guān)心底層基礎(chǔ)設(shè)施的管理和維護,并且僅為業(yè)務(wù)實際運行所需要的資源付費,幫助企業(yè)更加合理地控制用云成本。
基礎(chǔ)設(shè)施免運維、計算資源免規(guī)劃
在傳統(tǒng)自建 Kubernetes 集群的架構(gòu)中,無論是控制平面還是數(shù)據(jù)平面,作為容器組 Pod 運行的載體,節(jié)點都位于 Kubernetes 架構(gòu)的核心位置,當節(jié)點計算資源不足時,需要先通過增加節(jié)點來補充計算資源,才能支持業(yè)務(wù)工作負載的部署或者擴容。
在云上,以火山引擎容器服務(wù) VKE 為代表的各類托管 Kubernetes 服務(wù)會代替用戶管理和運維 Kubernetes 控制平面,提供具有 SLA 保障的托管服務(wù)。而對于運行用戶實際業(yè)務(wù)工作負載的數(shù)據(jù)平面而言,則通常需要用戶自行運維工作節(jié)點,并需要根據(jù)業(yè)務(wù)特征對節(jié)點所提供的計算資源進行提前規(guī)劃,如在業(yè)務(wù)高峰需要進行提前擴容,在業(yè)務(wù)低谷則需要縮容。
因此,在傳統(tǒng)以節(jié)點為核心的 Kubernetes 架構(gòu)中,節(jié)點運維往往需要耗費技術(shù)團隊大量精力;同時,如何平衡資源超前規(guī)劃與資源成本問題,也成為企業(yè)進入“精細化用云”時代后不得不思考的問題。
彈性容器實例 VCI 提供了 Serverless 和容器化的計算服務(wù),每個 VCI 只會為單個 Pod 提供運行環(huán)境和計算資源,用戶無需關(guān)心底層節(jié)點的運維和容量規(guī)劃,只需要按需部署容器應(yīng)用即可。而在使用 VCI 部署容器應(yīng)用時,可以使用原生的 Kubernetes 語義,與節(jié)點中心的架構(gòu)并無區(qū)別。
在資源層面,彈性容器實例 VCI 以火山引擎計算基礎(chǔ)設(shè)施作為資源池,提供多種資源類型的容器計算資源,方便用戶根據(jù)業(yè)務(wù)需要靈活選擇。同時,用戶也無需關(guān)注資源容量規(guī)劃問題,VCI 提供海量計算資源,不會出現(xiàn)傳統(tǒng)節(jié)點中心架構(gòu)下常見的 Pod 漂移(Drift)和重調(diào)度(Rescheduling)等現(xiàn)象,而進一步造成服務(wù)中斷、性能波動、數(shù)據(jù)不一致、調(diào)度延遲等問題。
最后,容器服務(wù) VKE 與彈性容器實例 VCI 的無縫集成,不僅實現(xiàn)了 Kubernetes 集群控制平面全托管,同時也為用戶提供了數(shù)據(jù)平面(即彈性容器實例 VCI)的 Serverless 化全托管、免運維、安全隔離,極大地降低用戶在 Kubernetes 基礎(chǔ)設(shè)施上的運維成本,并且省去了容量規(guī)劃的復雜性,從而使用戶可以將更多精力聚焦于自身業(yè)務(wù)應(yīng)用。
極致彈性,所需即所得
彈得省
根據(jù) Flexera 在《2022 年云狀態(tài)報告》披露的調(diào)查數(shù)據(jù),受訪企業(yè)自評估云成本浪費達 32%,“成本”已連續(xù)三年成為企業(yè)最關(guān)注的用云挑戰(zhàn)之一——“精細化用云”開始得到越來越多企業(yè)的重視,如何在滿足業(yè)務(wù)發(fā)展需求的同時節(jié)省云上成本開銷,成為企業(yè)用云所需要解決的一項重要挑戰(zhàn)。
彈性容器實例 VCI 在產(chǎn)品設(shè)計之初就圍繞企業(yè)“云成本控制”的需求,強調(diào)按照實際使用資源量精細化計費,支持多種計費模式,助力企業(yè)真正用好云。
精細化計費:彈性容器實例 VCI 按照用戶容器組(Pod)實際使用的資源計費,計費資源包括 vCPU、內(nèi)存、GPU 等。同時 VCI 實例的計費時長為其運行時長,即用戶 Pod 從下載容器鏡像開始到停止運行為止所使用的時間,精確到秒級,真正實現(xiàn)了按實際用量計費。
提升裝箱率:在云原生架構(gòu)下,相較于傳統(tǒng)計算資源,彈性容器實例的另一優(yōu)勢是減少閑置資源、提升裝箱率,從而降低用戶的計算資源使用成本。具體而言,Kubernetes 集群使用云服務(wù)器 ECS 作為工作節(jié)點時,需要在節(jié)點上運行 Kubernetes 所需的系統(tǒng)組件,因此需要預(yù)留部分計算資源,存在一定額外成本;而若使用彈性容器實例 VCI 作為計算資源,則只需要為業(yè)務(wù) Pod 實際使用資源付費:
- 示例:運行 3 個業(yè)務(wù) Pod,其對于 vCPU 的資源需求分為 16C、8C、8C
- 使用 ECS:至少需要 2 臺 32C vCPU 的 ECS 節(jié)點(需要在每個節(jié)點為系統(tǒng)預(yù)留資源)
- 使用 VCI:創(chuàng)建 3 個與 Pod 所需資源相等的 VCI 實例,即 32 C 計算資源(無任何資源閑置)
豐富計費方式:當前彈性容器實例 VCI 已正式支持按量計費,并將上線搶占式實例(Spot)付費模式的邀測活動,同時預(yù)留實例、彈性預(yù)約實例等預(yù)付費模式也有計劃支持。通過提供多種付費模式,我們希望能幫助用戶進一步優(yōu)化對計算資源的成本管理和預(yù)算編制,針對不同業(yè)務(wù)場景選用不同付費模式,從而更好地協(xié)調(diào)業(yè)務(wù)資源需求與用云成本規(guī)劃。
彈得出
彈性容器實例 VCI 充分整合了火山引擎的計算資源基礎(chǔ)設(shè)施進行算力供給,并且根據(jù)不同的底層硬件能力提供了多種實例規(guī)格族供用戶選擇,提供差異化的計算、存儲、網(wǎng)絡(luò)性能,支持覆蓋多種業(yè)務(wù)應(yīng)用和服務(wù)場景。
CPU 通用型規(guī)格族:如通用算力型 u1、通用型 n3i 等,提供了均衡的 vCPU、內(nèi)存、網(wǎng)絡(luò)能力,可以滿足大多數(shù)場景下的服務(wù)需求。
GPU 計算型規(guī)格族:如 GPU 計算型 gni2(搭載 NVIDIA A10 GPU 顯卡)、GPU 計算型 g1v(搭載 NVIDIA V100 GPU 顯卡)等,可在大模型訓練、文本與圖像生成、任務(wù)推理等各類 AI 計算類場景下提供高性價比使用體驗。
最新推出的通用算力型 u1 實例規(guī)格族依托火山引擎資源池化技術(shù)和智能調(diào)度算法進行動態(tài)資源管理,能夠為企業(yè)提供穩(wěn)定的算力供應(yīng),并且支持多種處理器以及處理器內(nèi)存的靈活配比,從 0.25C-0.5Gi、0.5C-1Gi、1C-2Gi 等細粒度小規(guī)格到 24C-48Gi、32C-256Gi 等大規(guī)格可供任意選擇,具有極高的性價比!
背靠龐大的算力資源供給,彈性容器實例 VCI 也為用戶提供了業(yè)界領(lǐng)先的彈性資源優(yōu)先級調(diào)度策略:結(jié)合容器服務(wù) VKE,我們支持用戶通過自定義資源策略(ResourcePolicy)將彈性調(diào)度到云服務(wù)器 ECS、彈性容器實例 VCI 等不同類型算力資源池,并根據(jù)實際業(yè)務(wù)場景按照百分比閾值、優(yōu)先級控制等策略進行調(diào)度分配。
這意味著用戶可以將云服務(wù)器 ECS 算力資源池和彈性容器實例 VCI 算力資源池結(jié)合使用,享用海量火山引擎計算資源;同時,結(jié)合容器集群中的 Cluster Autoscaler 能力和 VCI,即便容器集群中未提前申請計算資源,用戶也能夠及時獲得彈性資源高效支撐業(yè)務(wù)應(yīng)用。
彈得快
面對在線業(yè)務(wù)不可預(yù)測的業(yè)務(wù)流量洪峰,確保業(yè)務(wù)運行穩(wěn)定與用戶體驗至關(guān)重要;在業(yè)務(wù)發(fā)展的關(guān)鍵時刻,快速彈出計算資源與快速啟用業(yè)務(wù)應(yīng)用也非常關(guān)鍵。彈性容器實例同樣天然適配這些場景。
一方面,火山引擎彈性容器實例(VCI)的彈性能力可滿足分鐘級數(shù)萬核 vCPU 計算資源的需求,保證在業(yè)務(wù)需要時,快速彈出充足計算資源。當流量洪峰結(jié)束,業(yè)務(wù)工作負載降低時亦可迅速釋放彈性計算資源,讓用云成本更加節(jié)約。
另一方面,容器鏡像拉取的耗時往往較長,這一點在大規(guī)模 Pod 并發(fā)啟動的情況下更加嚴重。彈性容器實例 VCI 不僅具備 VKE 提供的多種容器鏡像加速能力,如容器鏡像延遲加載(鏡像懶加載)、P2P 容器鏡像分發(fā)等,也擁有容器鏡像緩存能力這樣的特有加速能力,根據(jù)實際測試數(shù)據(jù),容器鏡像緩存可以使容器鏡像(數(shù)據(jù)量在百 G 以內(nèi))的 Pod 的整體啟動耗時控制在十秒級別,幫助用戶大幅提升效率、降低云成本。
結(jié)語
自 2022 年正式上線以來,彈性容器實例 VCI 服務(wù)了諸多大中型企業(yè)客戶,在字節(jié)跳動內(nèi)外部業(yè)務(wù)場景中得到了充分的實踐檢驗。火山引擎云原生團隊也基于客戶服務(wù)經(jīng)驗,不斷打磨產(chǎn)品能力,持續(xù)提升產(chǎn)品服務(wù)的質(zhì)量和穩(wěn)定性:
- 在生態(tài)集成方面,彈性容器實例 VCI 不僅持續(xù)增強與 Kubernetes 生態(tài)的集成,能夠與火山引擎容器服務(wù) VKE 無縫集成,使客戶能夠更容易地在云原生環(huán)境中部署和管理容器應(yīng)用;
- 在分布式容器鏡像啟動加速方面,VCI 與火山引擎鏡像倉庫 CR 等產(chǎn)品協(xié)同改進 Dragonfly 架構(gòu),進一步增強了鏡像分發(fā)到 VCI 中的效率與可靠性;
- VCI 所特有的容器鏡像緩存加速能力,更好地解決了大規(guī)模并發(fā)、大型容器鏡像場景下的 Pod 啟動速度慢與鏡像拉取成功率低等問題,減輕鏡像倉庫壓力;
- 在計算資源規(guī)格的多樣性方面,VCI 在 2023 年推出了更多的可選資源,如基于火山引擎自研 DPU 全卸載架構(gòu)的全新通用計算型實例 n3i,屏蔽后端服務(wù)器差異,理論具有無限資源池的通用算力型實例 u1 等。
火山引擎云原生團隊主要負責火山引擎公有云及私有化場景中 PaaS 類產(chǎn)品體系的構(gòu)建,結(jié)合字節(jié)跳動多年的云原生技術(shù)棧經(jīng)驗和最佳實踐沉淀,幫助企業(yè)加速數(shù)字化轉(zhuǎn)型和創(chuàng)新。產(chǎn)品包括容器服務(wù)、鏡像倉庫、分布式云原生平臺、函數(shù)服務(wù)、服務(wù)網(wǎng)格、持續(xù)交付、可觀測服務(wù)等。
面向 2024 年,彈性容器實例 VCI 將持續(xù)在 Serverless Kubernetes 產(chǎn)品架構(gòu)與形態(tài)下持續(xù)精進與探索,為內(nèi)外部更多客戶提供基礎(chǔ)設(shè)施免運維、計算資源免規(guī)劃、極致彈性的 Serverless 容器化產(chǎn)品與服務(wù),能夠更好地支持客戶在 AIGC、生信科學計算、社交電商等業(yè)務(wù)場景的多種 GPU 和 CPU 的算力需求。