虛擬節(jié)點(diǎn)概述
當(dāng)您需要在短時(shí)間內(nèi)快速創(chuàng)建大量Pod時(shí),ECS節(jié)點(diǎn)擴(kuò)容速度可能無法滿足要求,而預(yù)留額外的ECS節(jié)點(diǎn)又會產(chǎn)生資源浪費(fèi)。借助虛擬節(jié)點(diǎn),您無需提前預(yù)留和維護(hù)固定資源池,可以直接將Pod調(diào)度到虛擬節(jié)點(diǎn)上以彈性容器實(shí)例ECI來運(yùn)行,在保障彈性的同時(shí)節(jié)約資源成本。
為什么要使用虛擬節(jié)點(diǎn)
虛擬節(jié)點(diǎn)是什么
在ACK集群中,節(jié)點(diǎn)是運(yùn)行工作負(fù)載的基本單位,提供實(shí)際的計(jì)算和存儲資源。通常,您的ACK集群會有至少一組ECS節(jié)點(diǎn)池,創(chuàng)建Pod時(shí),kubelet會將Pod調(diào)度到ECS節(jié)點(diǎn)上運(yùn)行。這種架構(gòu)能很好地應(yīng)對流量穩(wěn)定的業(yè)務(wù)。如果您的業(yè)務(wù)有不易提前預(yù)測的瞬時(shí)波峰,盡管ACK支持彈性伸縮,但ECS節(jié)點(diǎn)池?cái)U(kuò)容時(shí),ECS實(shí)例的創(chuàng)建和啟動本身會有一定的額外耗時(shí)。借助虛擬節(jié)點(diǎn),您可以直接調(diào)度Pod到阿里云彈性容器實(shí)例ECI(Elastic Container Instance)上運(yùn)行,降低節(jié)點(diǎn)運(yùn)維操作負(fù)擔(dān),同時(shí)避免產(chǎn)生閑置節(jié)點(diǎn)資源,降低成本。
虛擬節(jié)點(diǎn)通過ack-virtual-node組件將計(jì)算資源進(jìn)行封裝,無需管理底層基礎(chǔ)設(shè)施即可直接部署工作負(fù)載,ack-virtual-node會自動將應(yīng)用Pod調(diào)度到ECI上運(yùn)行。ECI是Serverless容器運(yùn)行服務(wù),一個(gè)ECI實(shí)例相當(dāng)于一個(gè)Pod。使用ECI部署容器應(yīng)用時(shí),您只需要提供打包好的Docker鏡像,即可運(yùn)行容器,并僅為容器實(shí)際運(yùn)行消耗的資源付費(fèi)。
功能優(yōu)勢
虛擬節(jié)點(diǎn)有如下使用優(yōu)勢。
免運(yùn)維:無需關(guān)心底層資源池的創(chuàng)建,減少運(yùn)維負(fù)擔(dān)。同時(shí),虛擬節(jié)點(diǎn)為托管資源,省去Kubernetes節(jié)點(diǎn)的常規(guī)運(yùn)維操作,例如系統(tǒng)升級、安全補(bǔ)丁修復(fù)等。
超大容量:最多可彈出50,000個(gè)Pod,無需提前規(guī)劃容量。
重要在Pod大量關(guān)聯(lián) Service的情況下,建議保持在20,000個(gè)以內(nèi)。
秒級彈性:在極短時(shí)間內(nèi)創(chuàng)建出數(shù)千Pod,無需擔(dān)心突發(fā)業(yè)務(wù)流量因Pod創(chuàng)建時(shí)延受到影響。
安全隔離:Pod基于ECI創(chuàng)建,每個(gè)容器實(shí)例底層通過輕量級虛擬化安全沙箱技術(shù)完全強(qiáng)隔離,容器實(shí)例間互不影響。
節(jié)省成本:應(yīng)用按需創(chuàng)建,按量計(jì)費(fèi),不運(yùn)行不計(jì)費(fèi),省去資源閑置費(fèi)用,同時(shí)Serverless帶來更低的運(yùn)維成本。
使用場景
基于虛擬節(jié)點(diǎn)本身的特性和優(yōu)勢,其典型使用場景如下所示。
在線業(yè)務(wù)
對于在線教育、電商等時(shí)常出現(xiàn)突發(fā)流量的在線業(yè)務(wù),支持秒級擴(kuò)容,避免流量激增擴(kuò)容不及時(shí)可能導(dǎo)致的系統(tǒng)故障,以及平時(shí)大量閑置資源造成的浪費(fèi)。
數(shù)據(jù)處理
處理Spark、Presto等大批量在線數(shù)據(jù)并發(fā)任務(wù)時(shí),可以不再因?yàn)槌杀驹蚴芟抻诘讓淤Y源, 從而導(dǎo)致數(shù)據(jù)處理任務(wù)的并發(fā)度受限。支持在短時(shí)間內(nèi)快速彈出數(shù)千Pod,滿足大數(shù)據(jù)的在線處理訴求。
AI任務(wù)
針對模型訓(xùn)練、模型推理等無需持續(xù)運(yùn)行且需要大量計(jì)算資源的AI任務(wù),無需預(yù)留資源,按需使用,按秒計(jì)費(fèi),降低AI推理成本。同時(shí),支持秒級彈性,可以快速響應(yīng)突發(fā)的任務(wù)需求。
CI/CD測試環(huán)境
針對CI/CD過程中的批量測試任務(wù),例如CI打包、壓力測試、仿真測試等,可以借助虛擬節(jié)點(diǎn)隨時(shí)創(chuàng)建和釋放容器實(shí)例。支持按需使用,按秒計(jì)費(fèi),實(shí)現(xiàn)低成本的大規(guī)模資源供應(yīng)。
Job和CronJob
這些任務(wù)無需持續(xù)運(yùn)行,任務(wù)完成后,Job會自動終止,對應(yīng)的Pod也會被刪除。虛擬節(jié)點(diǎn)支持在任務(wù)完成后自動停止計(jì)費(fèi)并釋放計(jì)算資源,避免資源閑置浪費(fèi)。
使用限制
請?jiān)谑褂锰摂M節(jié)點(diǎn)前,了解其存在的使用限制。
不支持DaemonSet型工作負(fù)載。您可以通過將DaemonSet重新配置為Pod的Sidecar容器來運(yùn)行。
不支持在Pod
manifest
中指定HostPath
和HostNetwork
。不支持Privileged特權(quán)容器。您可以使用Security Context為Pod添加Capability。
說明特權(quán)容器功能正在內(nèi)測中。如需體驗(yàn),請?zhí)峤还紊暾垺?/p>
不支持NodePort類型的Service,不支持配置Session Affinity。
不支持深圳金融云,不支持政務(wù)云。
相關(guān)計(jì)費(fèi)
使用虛擬節(jié)點(diǎn)時(shí),虛擬節(jié)點(diǎn)功能本身不計(jì)費(fèi),ACK集群管理費(fèi)用和相關(guān)阿里云云產(chǎn)品(包括ECI、VPC、負(fù)載均衡實(shí)例等)資源費(fèi)用正常收取。其中,ECI Pod運(yùn)行所產(chǎn)生的費(fèi)用請參見ECI的計(jì)費(fèi)概述。
快速體驗(yàn)
您可以參見通過虛擬節(jié)點(diǎn)將Pod調(diào)度到ECI上運(yùn)行快速體驗(yàn)通過虛擬節(jié)點(diǎn)運(yùn)行工作負(fù)載Pod的基礎(chǔ)用法。
部署ack-virtual-node組件,在集群中啟用虛擬節(jié)點(diǎn)功能。
為Pod或Namespace添加Label,借助虛擬節(jié)點(diǎn)將工作負(fù)載Pod調(diào)度到ECI上運(yùn)行。
相關(guān)操作
靈活配置ECI Pod
在集群維度通過編寫ECI Profile配置文件(名為eci-profile的ConfigMap)批量配置ECI Pod,例如指定安全組、指定交換區(qū)(即ECI Pod所在的可用區(qū))等。配置更新后,ECI Pod無需重啟,新建ECI Pod可以即時(shí)生效,存量ECI Pod滾動發(fā)布后可生效。詳細(xì)信息,請參見配置eci-profile。
對于ECI某些功能特性,例如指定ECI實(shí)例規(guī)格、啟用鏡像緩存以加速Pod創(chuàng)建、為ECI Pod分配IPv6地址、增加臨時(shí)存儲空間大小等,可以通過Pod Annotation來實(shí)現(xiàn),請參見ECI Pod Annotation。
節(jié)點(diǎn)混合部署場景下配置Pod調(diào)度策略
ACK提供多種調(diào)度方案。您可以指定應(yīng)用Pod只調(diào)度到虛擬節(jié)點(diǎn),也可以指定Pod優(yōu)先調(diào)度到ECS節(jié)點(diǎn)(包年包月或按量付費(fèi)),并在ECS節(jié)點(diǎn)資源不足時(shí)再調(diào)度至虛擬節(jié)點(diǎn),同時(shí)實(shí)現(xiàn)逆序縮容。請參見虛擬節(jié)點(diǎn)調(diào)度方案對比及介紹完成調(diào)度策略的選型。
調(diào)度Pod至指定的OS或Arch
調(diào)度至指定Arch:ACK集群默認(rèn)將工作負(fù)載Pod調(diào)度到x86架構(gòu)的虛擬節(jié)點(diǎn),并在x86節(jié)點(diǎn)資源不足時(shí)保持等待x86節(jié)點(diǎn)資源。如果您期望將工作負(fù)載Pod調(diào)度至Arm架構(gòu)的虛擬節(jié)點(diǎn),請參見調(diào)度至Arm虛擬節(jié)點(diǎn)。
調(diào)度至指定OS:如果您的容器需要運(yùn)行在Windows環(huán)境中,您可以在集群中添加Windows虛擬節(jié)點(diǎn),并將Pod調(diào)度到該虛擬節(jié)點(diǎn)上,請參見(邀測)調(diào)度Pod到Windows虛擬節(jié)點(diǎn)。
常見問題
如您在使用虛擬節(jié)點(diǎn)時(shí)遇到問題,可參見虛擬節(jié)點(diǎn)FAQ進(jìn)行自排查。