全部產品
Search
文件中心

Container Service for Kubernetes:虛擬節點概述

更新時間:Aug 15, 2025

當您需要在短時間內快速建立大量Pod時,ECS節點擴容速度可能無法滿足要求,而預留額外的ECS節點又會產生資源浪費。藉助虛擬節點,您無需提前預留和維護固定資源集區,可以直接將Pod調度到虛擬節點上以ECI執行個體來運行,在保障彈性的同時節約資源成本。

為什麼使用虛擬節點

虛擬節點是什麼

在ACK叢集中,節點是運行工作負載的基本單位,提供實際的計算和儲存資源。通常,您的ACK叢集會有至少一組ECS節點池,建立Pod時,kubelet會將Pod調度到ECS節點上運行。這種架構能很好地應對流量穩定的業務。如果您的業務有不易提前預測的瞬時波峰,儘管ACK支援Auto Scaling,但ECS節點池擴容時,ECS執行個體的建立和啟動本身會有一定的額外耗時。藉助虛擬節點,您可以直接調度Pod到阿里雲Elastic Container Instance(Elastic Container Instance)上運行,降低節點營運操作負擔,同時避免產生閑置節點資源,降低成本。

重要

相較於ECS節點,虛擬節點本身不支援自訂Label、Annotation、Taint。

虛擬節點通過ack-virtual-node組件封裝計算資源,無需管理底層基礎設施即可直接部署工作負載,ack-virtual-node會自動將應用Pod調度到ECI上運行。ECI是Serverless容器運行服務,一個ECI執行個體相當於一個Pod。使用ECI部署容器應用時,您只需要提供打包好的容器鏡像,即可運行容器,並僅為容器實際運行消耗的資源付費。

功能優勢

虛擬節點有如下使用優勢。

  • 免營運:無需關心底層資源集區的建立,減少營運負擔。同時,虛擬節點為託管資源,省去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類任務無需持續運行,任務完成後,Job會自動終止,對應的Pod也會被刪除。虛擬節點支援在任務完成後自動停止計費並釋放計算資源,避免資源閑置浪費。

使用限制

請在使用虛擬節點前,瞭解其存在的使用限制。

  • 不支援DaemonSet型工作負載。您可以通過將DaemonSet重新設定為Pod的Sidecar容器來運行。

  • 不支援在Pod manifest中指定HostPathHostNetwork

  • 不支援Privileged特權容器。您可以使用Security Context為Pod添加Capability。

    說明

    特權容器功能正在內測中。如需體驗,請提交工單申請。

  • 不支援NodePort類型的Service,不支援配置Session Affinity。

  • 不支援深圳金融雲,不支援政務雲。

計費說明

虛擬節點本身不收費,在虛擬節點上啟動並執行ECI Pod按照ECI計費規則進行計費。具體請參見ECI計費概述

說明

ECI Pod採用隨用隨付,從Pending狀態開始計費,至Succeeded或Failed狀態停止計費。更多資訊,請參見ECI Pod生命週期

如何使用虛擬節點

快速體驗

您可以參見將Pod調度到ECI上運行快速體驗虛擬節點的基礎用法。

部署ack-virtual-node組件

在ACK叢集中部署ack-virtual-node組件後,可以啟用虛擬節點功能。

ACK託管叢集

ACK託管叢集中,需要通過組件管理頁面部署ack-virtual-node組件,該組件預設被託管,不佔用Worker節點資源。

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理

  3. 組件管理頁面的核心組件地區,找到ACK Virtual Node,然後單擊安裝,並按照頁面提示完成操作。

    安裝時,使用叢集預設虛擬交換器和安全性群組作為初始ECI配置參數。如需修改,可通過配置eci-profile更新。

ACK專有叢集

ACK專有叢集中,需要通過應用市場頁面部署ack-virtual-node組件,安裝成功後會在kube-system命名空間下建立一個名為ack-virtual-node-controller的Deployment,該Deployment運行在Worker節點上。

  1. 登入Container Service管理主控台,在左側導覽列選擇市場 > 應用市場

  2. 應用市場頁面單擊應用目錄頁簽,搜尋並選中ack-virtual-node,然後在ack-virtual-node頁面,單擊一鍵部署

  3. 建立面板中,選擇叢集和命名空間,然後單擊下一步

    命名空間已設定為kube-system,發布名稱已設定為ack-virtual-node。

  4. 參數配置頁面,選擇最新Chart 版本,在參數地區,配置虛擬節點參數,然後單擊確定

    參數

    可選屬性

    描述

    擷取路徑

    ALIYUN_CLUSTERID

    Required

    叢集ID

    叢集資訊頁面的基本資料頁簽擷取叢集ID。

    ALIYUN_RESOURCEGROUP_ID

    Optional

    資源群組ID

    不配置時,預設使用預設資源群組。如需配置,登入資源管理主控台,擷取目標資源群組ID。

    ECI_REGION

    Required

    地區ID

    叢集資訊頁面的基本資料頁簽擷取地區資訊。

    說明

    關於地區名稱與地區ID的關係,請參見地區和可用性區域列表

    ECI_VPC

    Optional

    Virtual Private Cloud ID

    叢集資訊頁面的基本資料頁簽擷取叢集VPC ID。

    ECI_VSWITCH

    Required

    虛擬交換器ID

    多個vSwitch ID組成的虛擬交換器列表,用於為業務Pod分配IP。多個vSwitch ID之間使用英文半形逗號(,)分隔,例如vsw-xxx1, vsw-xxx2。建議與節點池使用相同的虛擬交換器列表。

    可在節點池頁面的節點池列表,單擊某個節點池,在基本詳情頁簽的節點配置地區,擷取節點vSwitch ID。

    說明

    請確認當前虛擬交換器在ECI支援的可用性區域列表中。

    ECI_SECURITY_GROUP

    Required

    安全性群組ID

    叢集資訊頁面的基本資料頁簽擷取安全性群組ID。

    ECI_ACCESS_KEY

    Required

    您的AccessKey ID

    請參見擷取AccessKey

    請授權RAM的AliyunECIFullAccess策略。更多資訊,請參見為RAM使用者授權

    ECI_SECRET_KEY

    Required

    您的AccessKey Secret

    請參見擷取AccessKey

    請授權RAM的AliyunECIFullAccess策略。更多資訊,請參見為RAM使用者授權

    KUBERNETES_APISERVER_HOST

    Required

    API Server的IP地址

    API Server內網串連端點的IP和連接埠。可在叢集資訊頁面的基本資料頁簽查詢。

    KUBERNETES_APISERVER_PORT

    Required

    API Server的連接埠

  5. 查看ack-virtual-node組件部署狀態。

    kubectl -n kube-system get deploy ack-virtual-node-controller

    預期輸出:

    NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
    ack-virtual-node-controller   1/1     1            1           2m31s

將Pod調度到ECI上運行

ACK提供了多種調度方案,可以滿足您在ECS和ECI混合部署情境下的各類調度需求。具體請參見調度Pod至虛擬節點

說明

ECI Pod預設的CPU架構為x86,作業系統為Linux。如需建立Arm架構的ECI Pod,或者Windows作業系統的ECI Pod,請參見調度至Arm虛擬節點(邀測)調度Pod到Windows虛擬節點

靈活配置ECI Pod

對於ECI某些功能特性,例如指定ECI Pod的規格、啟用鏡像緩衝以加速Pod建立、為ECI Pod分配IPv6地址、增加臨時儲存空間大小等,可以通過Pod Annotation來實現。具體請參見ECI Pod Annotation

說明

通過eci-profile的ECI Effect能力,可以為滿足條件的ECI Pod動態追加所需的Annotation,實現Pod的批量編排。

管理虛擬節點

升級ack-virtual-node組件

為了使用虛擬節點的一些進階特性,後續您可能需要升級ack-virtual-node組件。

重要

升級耗時約1分鐘。升級過程中無法建立Pod,但不影響存量Pod。

ACK託管叢集

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理

  3. 組件管理頁面的核心組件地區,找到ACK Virtual Node,然後單擊升級,並按照頁面提示完成操作。

ACK專有叢集

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Helm

  3. 在Helm列表的操作列,單擊ack-virtual-node對應的更新,在版本地區,選擇最新的Chart版本。

  4. 在配置參數地區,更新參數,然後單擊確定

    您也可以指定virtualNode.image.tag,升級鏡像到指定版本。

修改虛擬節點配置

eci-profile中包含了ECI Pod所屬的VPC和交換器、是否啟用ARM虛擬節點等配置,您可以根據需要更新data中的固定配置項。

刪除虛擬節點

卸載ack-virtual-node組件後,虛擬節點會被自動刪除,叢集中的ECI Pod將被自動清理。

  1. 檢查叢集中的ECI Pod,確認Pod刪除後不影響業務。

  2. 卸載ack-virtual-node組件。

    • ACK託管叢集:在組件管理頁面卸載ack-virtual-node組件。

    • ACK專有叢集:在Helm管理頁面刪除ack-virtual-node組件。

常見問題