全部產品
Search
文件中心

Container Service for Kubernetes:ACK叢集成本管理

更新時間:Feb 25, 2025

叢集成本調優旨在經濟高效地利用叢集資源,減少不必要的開支。為了實現叢集成本調優,工作負載和叢集的穩定性、可靠性以及叢集營運成本三者之間的平衡,本文為您匯總了相關的最佳實務,包括如何以較低成本配置叢集、使用工作負載和節點的彈效能力、即時監控叢集成本等。

本文使用指引

  • 本文主要面向ACK叢集的管理員,提供降低叢集成本的通用性建議。本文使用建議不區分前後順序,您可以自行選擇。建議您在閱讀本文前瞭解Pod和容器資源命名空間自動調整工作負載伸縮節點伸縮)、調度等Kubernetes基礎概念。

  • 為保證叢集應用的穩定運行,建議您同時搭配叢集高可用架構推薦配置工作負載推薦配置中的推薦配置使用。

  • 如果您的叢集類型為ACK叢集Pro版且規模較大(通常為超過500個節點或者10,000個Pod的叢集),建議您同時遵循大規模叢集使用建議中的內容管理叢集。

  • 期望您閱讀本文後,能在企業中構建起FinOps體系和團隊,並建立清晰的FinOps戰略目標。FinOps,即“Finance” + “DevOps”,是一種企業雲財務管理文化和實踐的結合,以實現雲資源使用的成本可預測性和透明度,從而確保企業在發展和創新的同時能夠控制和最佳化支出。更多資訊,請參見成本套件概述

使用低成本的叢集配置

在部署叢集之前,您需要評估叢集應用所需的資源需求,選擇合適的節點執行個體類型、叢集付費模式等,從而以更低的成本構建叢集。

選擇合適的ECS執行個體規格

選擇節點池的執行個體類型之前,您需要結合效能、價格、工作負載等因素,做出性價比與穩定性最優的決策。通常情況下,節點池選擇的ECS執行個體規格越高(CPU、記憶體配置越高)、專業程度越高(例如GPU執行個體、異構執行個體),節點成本也越高。

根據業務情境選擇執行個體規格

您可以根據業務情境選擇最具性價比的執行個體規格。例如,在分布式緩衝情境下,應用對於記憶體容量要求較高。相較於其他資源配比的規格,使用記憶體型執行個體(處理器與記憶體配比為1:8)可以提升CPU資源使用率,從而降低成本。在深度學習訓練情境下,深度學習任務通常對GPU資源有較高依賴,但同時也需要足夠的CPU資源來支援資料預先處理、I/O操作等任務,因此GPU與CPU的推薦配比為1:8到1:12之間。關於ECS選型的更多建議,請參見執行個體規格選型指導

說明

企業生產環境中,不推薦您使用小規格(2核 4 GB及以下規格)節點,避免網路資源受限、資源片段化等問題。更多資訊,請參見ECS執行個體規格配置建議

使用共用型執行個體

針對個人開發人員或者中小型網站應用程式,推薦使用共用型執行個體。相比企業級執行個體,共用型執行個體使用資源時可能會經歷效能的波動,但成本相對來說也更低。共用型執行個體適用於中小型網站、Web應用程式、開發環境、輕量級資料庫、輕量級公司專屬應用程式等情境。

如需瞭解詳細的共用型執行個體介紹和選型建議,請參見共用型

選擇合適的ECS執行個體付費類型

不同業務類型對資源的使用周期要求不同,您可以按需為業務選擇合適的付費模式,達到成本最優的效果。

  • 訂用帳戶

    訂用帳戶是一種高效經濟的計費模式,讓您能夠以更划算的價格享有持續穩定的資源使用體驗。如果您的業務需求具有如下特點,更推薦您使用訂用帳戶:

    • 可預測的資源使用周期

    • 穩定的業務情境

    • 長期的資源使用需求

    例如,在持續啟動並執行Web服務、資料庫服務等業務情境下,推薦您使用訂用帳戶。

  • 隨用隨付

    隨用隨付是一種更為靈活的計費模式,允許您在使用資源後再進行付費,無需提前購買大量資源,相較於自建IDC機房節省更多的成本。如果您的業務有以下特點,更推薦您使用隨用隨付:

    • 業務有周期性波動或突發流量,資源用量難以提前預測

    • 資源需求隨時變動,需要即時開通和釋放

    例如,在測試開發、電商促銷活動、業務需要臨時擴容等業務情境下,推薦您使用隨用隨付。

  • 搶佔式執行個體

    搶佔式執行個體是一種特殊的按需執行個體,價格隨庫存等因素即時變化,相對於隨用隨付執行個體最高能節省90%的成本。但搶佔式執行個體類型的節點可能在不確定時刻到期被回收,所以僅適用於無狀態、容錯能力強、中斷容忍度高的業務情境,例如批處理和機器學習培訓工作負載、巨量資料ETL(例如Apache Spark)、隊列處理應用和無狀態API應用等。如果您的作業已耗用時間較長或應用對穩定性有較高要求,不推薦您使用搶佔式執行個體。更多資訊,請參見搶佔式執行個體Auto Scaling最佳實務

使用節省計劃

如果您的業務需要長期使用ECS或ECI資源,您可以購買節省計劃來獲得大幅度的費用折扣。節省計劃通過承諾在一定期限內(1年、3年或5年)消費一定的金額,來換取較低的隨用隨付折扣。更多資訊,請參見什麼是節省計劃購買和使用節省計劃

為叢集選擇合適的地區

ECS執行個體資源在不同的地區可能定價不同。通常情況下,流量請求距離資源所在的地區較近時,將享受更低的網路延遲和更快的訪問速度。但如果您的業務對網路時延容忍度較高,您可以選擇在成本較低的地區部署叢集。如需瞭解ECS資源在不同地區的具體價格,請參見Elastic Compute Service

使用ACK託管叢集

ACK託管叢集的控制面由ACK建立並託管,您只需建立Worker節點,無需管理叢集控制面(Master節點)資源,也無需承擔控制面的資源費用,相較於ACK專有叢集更具有成本優勢。

如果您希望在叢集中運行大規模業務,或業務對穩定性和安全性有較高要求,推薦您使用ACK叢集Pro版ACK叢集Pro版支援賠付標準的SLA,進一步增強了叢集的可靠性、安全性和調度性。更多資訊,請參見ACK叢集Pro版概述

最佳化工作負載資源配置

設定適當的資源請求和限制

您需要合理配置容器的資源Request和Limit,配置過高時容易造成資源浪費,配置不足時可能影響流量高峰期叢集的穩定性。通常情況下,您可參考容器的歷史利用率情況、應用的壓測表現等來配置取值,同時權衡應用的穩定性和資源的利用率,還需要根據容器運行情況持續進行調整。

推薦您使用資源畫像功能產生資源配置的推薦值。資源畫像通過分析叢集歷史資源的使用資料來推薦容器的資源規格,不僅能有效降低為容器配置Request和Limit的複雜度,還能實現容器粒度的資源規格推薦,提高叢集資源的利用率。更多資訊,請參見資源畫像

管理命名空間與配額

在多租情境下,不同的業務或團隊通常會在不同的命名空間中部署應用。您可以通過命名空間進行資源的隔離,並為命名空間設定資源配額,限制業務或團隊消耗超出實際需求的資源。命名空間支援配置的配額包括CPU、記憶體、儲存資源、Pod數量等資源的上限。具體操作,請參見管理命名空間與配額

選擇合適的彈效能力

如果您的叢集業務流量波動較大,推薦您根據業務需求和策略配置自動調整策略,讓叢集自動調整彈性計算資源。自動調整能夠在業務負載上升時快速擴容Pod副本來緩解壓力,在業務負載變小時適當縮容以節省資源。您只需要為實際使用的資源支付費用,無需基於最高需求來配置和支付資源,從而達到降低叢集成本的目的。

  • 工作負載伸縮(調度層彈性):主要負責修改工作負載的調度容量變化。例如,HPA是典型的調度層彈性組件,可以調整應用的副本數,調整的副本數會改變當前負載佔用的調度容量,從而實現調度層的伸縮。

  • 節點伸縮(資源層彈性):在叢集的容量規劃不能滿足叢集調度容量時,會擴容節點資源,進行調度容量的補充。

工作負載伸縮

方案

說明

容器水平伸縮(HPA)

基於CPU使用率、記憶體使用量率或其他自訂指標實現Pod的自動擴縮,在業務負載上升時擴容Pod來緩解壓力,在業務負載下降時縮容以節省資源。HPA適用於服務波動較大、服務數量多且需要頻繁擴縮容的業務情境。

在為應用配置HPA時,為保證應用的穩定運行,建議您同時遵循以下做法:

  • 為應用設定適當的資源請求和限制。

  • 配置Pod健康檢測與自愈,確保應用僅在啟動、運行並就緒後才接收流量。

  • 確保應用可以快速啟動和安全關停。

  • 確保Metrics Server正常運行。

容器定時水平伸縮(CronHPA)

通過類似於Crontab的策略配置Pod的定時擴縮容,適用於業務流量有明顯高峰時段、應用程式需要在特定時間執行任務等情境。

在為應用配置CronHPA時,為保證應用的穩定運行,建議您同時遵循以下做法:

  • 為應用設定適當的資源請求和限制。

  • 配置Pod健康檢測與自愈,確保應用僅在啟動、運行並就緒後才接收流量。

  • 確保應用可以快速啟動和安全關停。

  • 如果您的應用同時配置了CronHPA和HPA,為避免兩種配置獨立工作導致操作覆蓋,請參見實現CronHPA與HPA的協同

容器垂直伸縮(VPA)

根據Pod的歷史資源消耗推薦CPU和記憶體的配置,並在適當的情況下自動進行調整,適用於依賴穩定資源配置的有狀態工作負載。

在為應用配置VPA時,為保證應用的穩定運行,建議您同時遵循以下做法:

彈性預測伸縮(AHPA)

通過對應用的歷史資源資料進行學習和分析,自動識別彈性周期並對容量進行預測,並動態調整Pod的數量,確保在業務高峰到來時提前完成資源擴容,以及在預測到業務低穀時適時縮容。

與HPA類似,在為應用配置AHPA時,為保證應用的穩定運行,建議您同時遵循以下做法:

  • 為應用設定適當的資源請求和限制。

  • 配置Pod健康檢測與自愈,確保應用僅在啟動、運行並就緒後才接收流量。

  • 確保應用可以快速啟動和安全關停。

事件驅動伸縮(KEDA)

提供事件驅動的彈效能力,支援配置Kafka、MySQL、PostgreSQL、RabbitMQ、MongoDB等事件來源,從事件來源中進行資料的周期性消費,主要適用於音視頻離線轉碼、事件驅動作業、流式資料處理等情境。

在為應用配置KEDA時,為保證應用的穩定運行,建議您同時遵循以下做法:

  • 為應用設定適當的資源請求和限制。

  • 配置Pod健康檢測與自愈,確保應用僅在啟動、運行並就緒後才接收流量。

  • 確保應用可以快速啟動和安全關停。

節點伸縮

在使用工作負載伸縮的同時,為避免新擴容的Pod由於節點資源不足而調度失敗,建議您同時啟用節點伸縮。關於節點自動調整節點即時彈性的方案選型,請參見彈性方案:節點自動調整與節點即時彈性

方案

說明

節點自動調整

當叢集的容量規劃無法滿足應用Pod調度時,您可以使用節點自動調整方案實現節點的自動擴縮。節點自動調整適用於擴容規模較小(例如開啟彈性的節點池數量少於20,或對應節點池中的節點數量少於100),工作負載批次較為穩定,以單次伸縮為主等業務情境。

在配置節點自動調整時,為保證應用的穩定運行,建議您同時遵循以下做法:

  • 為應用設定適當的資源請求和限制。

  • 為應用配置Pod Disruption Budget,確保至少有指定數量的副本保持運行。

節點即時彈性

如果您的叢集規模較大(例如彈性節點池中節點數大於100,或彈性節點池數大於20)、對資源交付速度有更高要求、期望靈活實現多執行個體規格和跨可用性區域自動調整,那麼節點自動調整可能無法滿足您擴縮容的需求,推薦您使用節點即時彈性功能。節點即時彈性降低了開發人員的使用門檻並提高了彈性效率,同時降低了營運人員維護成本。

節點即時彈性存在一些使用限制,請參見節點即時彈性的使用限制

虛擬節點

當您需要在短時間內快速建立大量Pod時,ECS節點擴容速度可能無法滿足要求,而預留額外的ECS節點又會產生資源浪費。藉助ACK虛擬節點可以將Pod快速地調度到Elastic Container Instance上運行,且無需購買和管理ECS節點。更多資訊,請參見虛擬節點調度方案對比及介紹通過虛擬節點將Pod調度到ECI上運行

最佳化應用調度

使用動態資源超賣

如果叢集中同時部署了Guaranteed和Burstable兩類Pod,可以通過動態資源超賣功能充分利用叢集中已指派但未使用的資源。

在ACK叢集中,為了應對上下遊鏈路波動,應用管理員提交了不同QoS等級的Pod(例如Guaranteed和Burstable)時一般需要為應用配置相當數量的資源Buffer,導致應用實際資源使用量遠低於資源申請量。為了充分利用叢集中已指派但未使用的資源,您可以使用動態資源超賣功能,提升叢集資源使用率。

動態資源超賣可以定義節點的安全冗餘水位,將安全冗餘水位外的資源作為可動態超賣的資源。節點可超賣的資源量基於實際資源用量動態更新,您可以調度低優先順序的BestEffort任務到該節點上。更多資訊,請參見啟用動態資源超賣

例如,在離線混部情境下,您會在叢集或節點上同時部署延遲敏感的線上類型和資源消耗高的離線類型的應用。此時,在滿足線上應用服務品質的同時,推薦您為離線應用提供超賣的資源,實現CPU、記憶體等維度精細化管理,從而提升叢集整體資源使用率。具體操作,請參見快速入門

使用GPU共用調度

如果期望讓多個容器運行在同一個GPU裝置,降低GPU資源的使用成本,您可以使用GPU共用調度能力。

GPU的共用方式包括單卡共用和多卡共用,單卡共用指一個Pod只申請一張GPU卡,佔用該GPU的部分資源,常用於模型推理情境;多卡共用指一個Pod申請多張GPU卡,每張GPU提供等量的部分資源,常用於支援分布式模型訓練代碼的開發。您還可以靈活配置GPU共用和隔離的策略,例如配置多個Pod優先集中使用同一GPU卡或盡量分散使用不同GPU卡。更多資訊,請參見共用GPU調度概述

建立資源和成本監控

通過成本洞察功能查看部門或應用成本

對於企業IT成本管理員,一般需要從不同維度瞭解叢集資源使用量及成本分布,擷取成本節約建議,從而提升叢集資源使用率。您可以啟用ACK叢集提供的成本洞察功能,查看指定財務治理周期內,指定叢集、部門、應用的成本和資源使用方式。更多資訊,請參見成本洞察

在ACK叢集中,Pod作為最小的可部署單元,是衡量叢集成本的關鍵因素。但不同Pod可能有不同的資源配置、調度策略和生命週期,導致其成本估算較為複雜。成本洞察基於成本資料模型實現,能夠協助您準確估算Pod的成本及佔比,並將叢集總費用分攤到不同業務單元。您也可以結合多維度成本大盤,分析歷史資源趨勢和成本明細,定位業務成本異常根因。

定期掃描叢集閑置資源

您可以定期掃描並釋放ACK叢集中的閑置資源,例如CPU、記憶體、儲存、網路資源等,減少不必要的開銷。

您可以啟用成本洞察功能查看Pod的閑置資源情況,從而分析資源浪費的原因,有針對性地設計資源最佳化策略。更多資訊,請參見付費策略及Pod用量

ACK叢集還提供閑置資源最佳化功能,可以掃描出與叢集相關但未被使用的資源(包括ECS、Block Storage、CLB、EIP等),供您判斷是否需要對這類閑置資源進行處理。更多資訊,請參見閑置資源最佳化