當您需要在短時間內快速建立大量Pod時,ECS節點擴容速度可能無法滿足要求,而預留額外的ECS節點又會產生資源浪費。藉助虛擬節點,您無需提前預留和維護固定資源集區,可以直接將Pod調度到虛擬節點上以Elastic Container Instance來運行,在保障彈性的同時節約資源成本。
為什麼要使用虛擬節點
虛擬節點是什麼
在ACK叢集中,節點是運行工作負載的基本單位,提供實際的計算和儲存資源。通常,您的ACK叢集會有至少一組ECS節點池,建立Pod時,kubelet會將Pod調度到ECS節點上運行。這種架構能很好地應對流量穩定的業務。如果您的業務有不易提前預測的瞬時波峰,儘管ACK支援Auto Scaling,但ECS節點池擴容時,ECS執行個體的建立和啟動本身會有一定的額外耗時。藉助虛擬節點,您可以直接調度Pod到阿里雲Elastic Container Instance(Elastic Container Instance)上運行,降低節點營運操作負擔,同時避免產生閑置節點資源,降低成本。
虛擬節點通過ack-virtual-node組件將計算資源進行封裝,無需管理底層基礎設施即可直接部署工作負載,ack-virtual-node會自動將應用Pod調度到ECI上運行。ECI是Serverless容器運行服務,一個ECI執行個體相當於一個Pod。使用ECI部署容器應用時,您只需要提供打包好的Docker鏡像,即可運行容器,並僅為容器實際運行消耗的資源付費。
功能優勢
虛擬節點有如下使用優勢。
免營運:無需關心底層資源集區的建立,減少營運負擔。同時,虛擬節點為託管資源,省去Kubernetes節點的常規營運操作,例如系統升級、安全補丁修複等。
超大容量:最多可彈出50,000個Pod,無需提前規劃容量。
重要在Pod大量關聯 Service的情況下,建議保持在20,000個以內。
秒級彈性:在極短時間內建立出數千Pod,無需擔心突發業務流量因Pod建立時延受到影響。
安全隔離:Pod基於ECI建立,每個容器執行個體底層通過輕量級虛擬化安全沙箱技術完全強隔離,容器執行個體間互不影響。
節省成本:應用按需建立,隨用隨付,不運行不計費,省去資源閑置費用,同時Serverless帶來更低的營運成本。
使用情境
基於虛擬節點本身的特性和優勢,其典型使用情境如下所示。
線上業務
對於線上教育、電商等時常出現突發流量的線上業務,支援秒級擴容,避免流量激增擴容不及時可能導致的系統故障,以及平時大量閑置資源造成的浪費。
資料處理
處理Spark、Presto等大批量線上資料並發任務時,可以不再因為成本原因受限於底層資源, 從而導致資料處理任務的並發度受限。支援在短時間內快速彈出數千Pod,滿足巨量資料的線上處理訴求。
AI任務
針對模型訓練、模型推理等無需持續運行且需要大量計算資源的AI任務,無需預留資源,按需使用,按秒計費,降低AI推理成本。同時,支援秒級彈性,可以快速響應突發的任務需求。
CI/CD測試環境
針對CI/CD過程中的批量測試工作,例如CI打包、壓力測試、模擬測試等,可以藉助虛擬節點隨時建立和釋放容器執行個體。支援按需使用,按秒計費,實現低成本的大規模資源供應。
Job和CronJob
這些任務無需持續運行,任務完成後,Job會自動終止,對應的Pod也會被刪除。虛擬節點支援在任務完成後自動停止計費並釋放計算資源,避免資源閑置浪費。
使用限制
請在使用虛擬節點前,瞭解其存在的使用限制。
不支援DaemonSet型工作負載。您可以通過將DaemonSet重新設定為Pod的Sidecar容器來運行。
不支援在Pod
manifest
中指定HostPath
和HostNetwork
。不支援Privileged特權容器。您可以使用Security Context為Pod添加Capability。
說明特權容器功能正在內測中。如需體驗,請提交工單申請。
不支援NodePort類型的Service,不支援配置Session Affinity。
不支援深圳金融雲,不支援政務雲。
相關計費
使用虛擬節點時,虛擬節點功能本身不計費,ACK叢集管理費用和相關阿里雲雲產品(包括ECI、VPC、Server Load Balancer執行個體等)資源費用正常收取。其中,ECI Pod運行所產生的費用請參見ECI的計費概述。
快速體驗
您可以參見通過虛擬節點將Pod調度到ECI上運行快速體驗通過虛擬節點運行工作負載Pod的基礎用法。
部署ack-virtual-node組件,在叢集中啟用虛擬節點功能。
為Pod或Namespace添加Label,藉助虛擬節點將工作負載Pod調度到ECI上運行。
相關操作
靈活配置ECI Pod
在叢集維度通過編寫ECI Profile設定檔(名為eci-profile的ConfigMap)大量設定ECI Pod,例如指定安全性群組、指定交換區(即ECI Pod所在的可用性區域)等。配置更新後,ECI Pod無需重啟,建立ECI Pod可以即時生效,存量ECI Pod滾動發布後可生效。詳細資料,請參見配置eci-profile。
對於ECI某些功能特性,例如指定ECI執行個體規格、啟用鏡像緩衝以加速Pod建立、為ECI Pod分配IPv6地址、增加臨時儲存空間大小等,可以通過Pod Annotation來實現,請參見ECI Pod Annotation。
節點混合部署情境下配置Pod調度策略
ACK提供多種調度方案。您可以指定應用Pod只調度到虛擬節點,也可以指定Pod優先調度到ECS節點(訂用帳戶或隨用隨付),並在ECS節點資源不足時再調度至虛擬節點,同時實現逆序縮容。請參見虛擬節點調度方案對比及介紹完成調度策略的選型。
調度Pod至指定的OS或Arch
調度至指定Arch:ACK叢集預設將工作負載Pod調度到x86架構的虛擬節點,並在x86節點資源不足時保持等待x86節點資源。如果您期望將工作負載Pod調度至Arm架構的虛擬節點,請參見調度至Arm虛擬節點。
調度至指定OS:如果您的容器需要運行在Windows環境中,您可以在叢集中添加Windows虛擬節點,並將Pod調度到該虛擬節點上,請參見(邀測)調度Pod到Windows虛擬節點。
常見問題
如您在使用虛擬節點時遇到問題,可參見虛擬節點FAQ進行自排查。