優化Azure Kubernetes Service(AKS)使用率與成本

本文說明了在擴展性、基礎設施規模、GPU 使用率、多租戶及 Azure 折扣等方面,優化 Azure Kubernetes Service (AKS) 使用率與成本的實用方法。

對於大多數生產工作負載,AKS Automatic 是推薦的起點,因為它套用生產準備預設、自動化核心作業,並有助於減少過度配置。 當你需要更深入的平台客製化時,AKS Standard 依然是正確的選擇。

本文涵蓋:

選擇你的優化基準

首先選擇符合您成本與營運模式的 AKS 叢集模式。

劇本 推薦的叢集模式 原因為何
大多數生產工作負載需要的是強大成本效益及降低營運開銷 AKS 自動化系统 預先設定的生產預設值、受管理的營運以及高效的資源配置,有助於減少資源優化的浪費與時間。
需要大量自訂叢集配置、專用附加元件或嚴格平台控制的工作負載 AKS 標準 對叢集配置與運作模式的完全控制權。
團隊處於 Kubernetes 營運成熟初期,專注於快速且可預測的交付 AKS 自動化系统 降低平台管理複雜度,讓團隊能專注於應用程式。
擁有既定平台工程流程與特定架構標準的團隊 AKS 標準 支援進階自訂與自訂作戰模式。

欲了解更多資訊,請參閱 What is Azure Kubernetes Service (AKS) Automatic?

AKS 自動化成本優勢

AKS Automatic 透過兩個方式降低成本:透過自動化減少計算浪費,以及降低運行 Kubernetes 的營運開銷。 下表總結了直接影響成本的特徵,以及它們與AKS標準的比較。

預先設定功能一律啟用且無法變更。 預設 功能是為你設定的,但可以調整。 選用功能可供設定,且預設不會啟用。

Feature AKS 自動化系统 AKS 標準 成本影響
節點自動配置(NAP) 預先設定 可選 自動為處於待排程狀態的 Pod 配置大小適當的節點,減少閒置和過度配置的容量。
水平 Pod 自動調整程式 (HPA) 預先設定 可選 無需人工介入即可調整艙體以符合需求,避免低流量時的資源浪費。
Kubernetes 事件驅動自動擴展器(KEDA) 預先設定 可選 事件驅動的自動擴縮可免除閒置副本待命等候工作。
垂直 pod 自動調整程式 (VPA) 預先設定 可選 根據實際使用情況,自動調整 Pod 資源請求與限制大小。
Pod bin 封裝效率 預先設定 手動調音 Pod 會被高效地分箱包裝,以最大化節點利用率,減少所需節點數量。
受控 Prometheus + 容器深入解析 預設 可選 從第一天起即可獲得成本可視性,無需建置可觀測性機制。
自動叢集與節點作業系統升級 預先設定 手動或選用 消除升級相關的工程負擔,並降低未修補節點引發昂貴安全事件的風險。
自動節點修復 預先設定 預先設定 減少因節點不健康而產生的停機成本,無需人工介入。
完全管理的節點資源群組 預先設定 可選的封鎖 防止意外或未經授權的資源變更,避免產生意外成本。
正常運作時間 SLA(API 伺服器 99.95%) 已包含 付費(標準等級升級) 無需額外費用即可獲得具財務擔保的可用性保證。
Pod 就緒服務水準協議(99.9% 在 5 分鐘內達成) 包含 無法提供 可預測的擴展行為,無需自訂可靠性投資。

Note

由於像 HPA、KEDA 和 VPA 這類擴展工具在 AKS Automatic 中已預先設定,團隊無需自行設定這些功能所需的設定、測試與維護成本。 在 AKS Standard 中,這些功能每一項都需要手動設定並持續調整。

自動縮放

水平 Pod 自動調整

水平艙自動縮放器(HPA)監控資源需求,並自動更新工作負載資源,以擴大莢艙數量以符合需求。 對負載增加的回應是部署更多太空艙。 如果負載降低且 pod 數量超過設定最小值,自動縮放器會告訴工作負載資源縮減。

Metrics API 每 60 秒從 kubelet 取得資料,HPA 預設每 15 秒檢查 Metrics API 是否有需要的變更。 這表示 HPA 每 60 秒更新一次。 當你為部署設定 HPA 時,你會定義可執行的最小與最大副本數量,以及 HPA 用來判斷何時擴展的指標。

Tip

在 AKS 自動中,HPA 已預先配置,無需額外設定即可使用。 在 AKS Standard 中,需手動為每個工作負載設定 HPA。

欲了解更多資訊,請參閱 水平 Pod 自動縮放(Horizontal Pod Autoscaling) 及 在 AKS 中自動調整 Pod 的規模。

Kubernetes 事件驅動自動擴展

Kubernetes 事件驅動自動擴展器(KEDA)將事件驅動自動擴展應用於你的工作負載。 KEDA 可與 HPA 協同運作,並能在不覆寫或重複的情況下擴展功能。

Tip

在 AKS Automatic 中,KEDA 已預先設定並啟用於叢集上。 在 AKS Standard 中,你是手動安裝和設定 KEDA 外掛。

你可以使用 AKS 的 KEDA 擴充套件來擴展你的應用程式,並利用 豐富的 Azure KEDA 擴展器目錄。 欲了解更多資訊,請參閱 使用 KEDA 外掛的應用程式自動擴展 及 AKS 安裝 KEDA 外掛。

垂直 Pod 自動調整

垂直 Pod 自動擴縮器(VPA)會根據過去的使用情況,自動為各工作負載中的容器設定資源請求和限制。 VPA 會釋放 Pod 的 CPU 和記憶體,以確保有效運用您的 AKS 叢集。 隨著時間推移,VPA 會提供資源使用建議。

Tip

在 AKS Automatic 中,VPA 已預先設定並啟用於叢集上。 在 AKS 標準中,你可以手動啟用並設定 VPA。

欲了解更多資訊,請參閱Azure Kubernetes Service(AKS)中的垂直莢艙自動縮放及在 Azure Kubernetes Service(AKS)中使用垂直莢艙自動縮放器(VPA)。

叢集適當調整大小

適當調整您的叢集大小

適當調整叢集規模以優化成本與效能。 手動調整叢集大小,透過新增或移除節點來滿足應用程式需求。 您也可以自動調整叢集,以自動調整節點數目,以響應變更的需求。

Tip

AKS Automatic 預設啟用 Managed Prometheus 和 Container Insights,讓你從第一天起就能立即掌握資源使用情況。 在 AKS Standard 中,你可以另外設定可觀測性。 及早掌握可見度有助於您在超額佈建訊號累積成持續浪費前採取行動。

欲了解更多資訊,請參閱 Resize Azure Kubernetes Service (AKS) 叢集。

叢集自動調整

透過使用 叢集自動擴展器,你可以根據資源使用和限制自動擴展節點池。 例如,可以相應增加來為擱置中的 Pod 進行排程,或相應減少來降低未使用節點所產生的成本。 叢集自動縮放器的設定檔是一組參數,你可以微調用來控制叢集自動縮放器的行為。

欲了解更多資訊,請參閱 Azure Kubernetes Service (AKS) 中的叢集自動擴展概覽 及 使用 Azure Kubernetes Service (AKS) 中的叢集自動擴展器。

節點自動佈建

以 Karpenter 為基礎的節點自動佈建 (NAP) 會為處於擱置中狀態的 Pod 佈建規模適當的基礎結構資源,並提升 bin 封裝效率。

  • 在 AKS Automate 中,節點自動配置是管理體驗的一部分。
  • 在 AKS Standard 中,當你需要自訂叢集模型時,可以使用節點自動配置功能。

欲了解更多資訊,請參閱 Azure Kubernetes Service (AKS) 中的 Node autoprovisioning 。

GPU 優化

GPU 分割與共享

GPU 分割有助於解決利用率不足的問題,方法是將 GPU 切分或共享給多個工作負載。 以下章節將介紹在 AKS 中分割與共享 GPU 的不同方式。

時間分割

NVIDIA GPU 操作員可在 Kubernetes 叢集中啟用 GPU 的時間切片。 透過時間分割,系統管理員可以為 GPU 定義一組副本,每個 副本 管理員可獨立分配給一個 Pod 以執行工作負載。 你可以套用叢集範圍的預設時間切片配置和節點特定的配置。

一張顯示 GPU 時間切片的視覺圖表範例截圖。

欲了解更多有關資訊,請參見 Kubernetes 中的 GPU 時間分割。

多流程服務 (MPS)

單一程序可能無法使用GPU上所有可用的記憶體與運算頻寬容量。 多程序服務(MPS)使記憶體與運算資源在工作負載間進行邏輯分割。 它也允許不同程序的核心與記憶體複製操作在 GPU 上重疊。 MPS 幫助你提升 GPU 使用率並縮短運行時間。

一張顯示 GPU 多程序服務(MPS)的視覺圖表範例截圖。

欲了解更多資訊,請參閱多程序服務(MPS)。

多執行個體 GPU (MIG)

多實例 GPU(MIG) 允許您根據 NVIDIA Ampere 及後續架構將 GPU 分割成獨立且安全的 GPU 實例,供 CUDA 應用使用。

一張視覺圖表範例截圖,展示多實例 GPU(MIG)。

欲了解更多資訊,請參閱 Azure Kubernetes Service (AKS) 中的多實例 GPU 概覽及 搭配 MIG 的 GPU Operator。

多租用戶

多租戶是指在租戶、團隊及業務單位間共享基礎設施。 下表概述在 AKS 中實作多租用戶的不同方式:

多租戶類型 多租戶層級 叢集 Pod 密度 成本配置 理想使用案例 潛在風險
專用叢集 硬式多租用戶 降低 最簡單 完全的安全隔離邊界與直接的成本分配 • 大規模群聚蔓延會增加管理管理成本
• 較低的艙體密度及資源過度供應
專用節點池 軟式多租用戶 中等 中等 中等莢果密度 • 要求租戶間的信任
• 需要額外的叢集配置,如網路政策、配額管理、基於角色的存取控制(RBAC)等。
專用命名空間 軟式多租用戶 較高 更艱難 共享基礎設施以最大化資源利用 • 預設不適合在危險環境中使用
• 需要額外的叢集配置,如網路政策、配額管理、基於角色的存取控制(RBAC)等。

專用叢集

在 專用叢集多租戶制中,叢集是專門用於單一工作負載或團隊的。

一張視覺圖表範例的截圖,顯示專用叢集多租戶。

下表列出使用專用叢集的優缺點:

優點 Cons
• 更簡便的隔離方法
• 直接的成本分配與退款
• 非常適合租戶彼此不信任的情況(通常是從安全與資源共享角度)
• 高層管理與財務負擔
• 整體來說,艙群密度低且資源過剩

專用節點池

在 專用節點池多租戶模式下,叢集會被多個租戶共享。

一張視覺圖表範例截圖,展示專用節點池多租戶。

下表列出使用專用節點池的優缺點:

優點 Cons
• 中等莢果密度
• 部分共享基礎設施
• 將 Azure 標籤套用於單一租戶的節點池(標籤會傳播至節點並持續升級)
• 需要租戶間的信任
• 需要額外的叢集配置,如網路政策、配額管理、基於角色的存取控制(RBAC)等。

專用命名空間

在 專用命名空間多租戶中,叢集會被多個租戶共享,命名空間作為隔離邊界。

一張視覺圖表範例截圖,顯示專用命名空間多租戶。

下表列出使用專用命名空間的優缺點:

優點 Cons
• 較高的莢果密度
• 最佳垃圾包裝
• 共享基礎設施以最大化資源利用
• 預設不適合在危險環境中使用
• 若所有租戶都不可信,需加強安全措施

Azure 折扣

若想更進一步節省,請善用 Azure 折扣,如 Azure 儲蓄計畫、預留實例及 Azure 混合式福利。

Azure 折扣類型 詳細資料
Azure Savings Plans • 1-3年預付承諾
• 與隨用隨付方案相比,可節省高達65%
• 彈性,無SKU家族或區域限制
• 最適合用於在 مختلف SKU 和區域中,資源成本穩定的工作負載
保留實例 • 1-3年預付承諾
• 與隨用付費方案相比,最高可節省72%
• 僅限於特定 SKU 家族與區域
• 最適用於穩定且持續運行的工作負載(無突發的 SKU 或地區變更)
Azure Hybrid Benefits • 將您自己的本地 Windows Server 與 SQL Server 授權帶至 Azure
• 使用任何符合資格、且具有有效 Software Assurance (SA) 或符合資格訂用帳戶的內部部署授權

若要深入了解 AKS 的成本和 AKS Automatic,請參閱下列文章: