全部產品
Search
文件中心

Container Service for Kubernetes:虛擬節點概述

更新時間:Dec 05, 2024

當您需要在短時間內快速建立大量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中指定HostPathHostNetwork

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

    說明

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

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

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

相關計費

使用虛擬節點時,虛擬節點功能本身不計費,ACK叢集管理費用和相關阿里雲雲產品(包括ECI、VPC、Server Load Balancer執行個體等)資源費用正常收取。其中,ECI Pod運行所產生的費用請參見ECI的計費概述

快速體驗

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

  1. 部署ack-virtual-node組件,在叢集中啟用虛擬節點功能。

  2. 為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進行自排查。