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