Share via


在 Azure Kubernetes Service (AKS) 中最佳化成本

成本優化是將資源的價值最大化,同時將雲端環境中不必要的費用降至最低。 此程式牽涉到識別符合成本效益的組態選項,並實作最佳做法以改善作業效率。 AKS 環境可以優化,以將成本降至最低,同時考慮效能和可靠性需求。

在本文中,您會了解:

  • 策略性基礎結構選擇
  • 動態許可權調整和自動調整
  • 利用 Azure 折扣節省大量成本
  • 整體監視和 FinOps 做法

準備應用程式環境

評估 SKU 系列

請務必在部署前評估應用程式的資源需求。 小型開發工作負載的基礎結構需求與大型生產就緒工作負載不同。 雖然 CPU、記憶體和網路容量組態的組合嚴重影響 SKU 的成本效益,但請考慮下列 VM 類型:

  • Azure Spot 虛擬機器 - Spot 節點集是由 Azure Spot 虛擬機擴展集所支援,並部署至沒有高可用性或 SLA 保證的單一容錯網域。 現成 VM 可讓您利用未使用 Azure 容量與大幅折扣(相較於隨用隨付價格,最高 90%)。 如果 Azure 需要容量回來,Azure 基礎結構就會收回現成節點。 最適合用於開發/測試環境的工作負載、可處理中斷的工作負載,例如批處理作業,以及具有彈性運行時間的工作負載。
  • Ampere Altra Arm 處理器 (ARM64) - ARM64 VM 具有省電且符合成本效益,但不會危害效能。 透過 AKS 中的 AMR64 節點集區支援,您可以建立 ARM64 Ubuntu 代理程式節點,甚至混合叢集中的 Intel 和 ARM 架構節點。 這些 ARM VM 是設計來有效率地執行動態、可調整的工作負載,而且可提供比相應放大工作負載可比較的 x86 型 VM 更高的效能 50%。 最適合用於 Web 或應用程式伺服器、開放原始碼資料庫、雲端原生應用程式、遊戲伺服器等等。
  • GPU 優化 SKU - 視工作負載的性質而定,請考慮使用計算優化、記憶體優化、記憶體優化,甚至是圖形化處理單位 (GPU) 優化的 VM SKU。 GPU VM 大小是特製化 VM,可供單一、多個和分數 GPU 使用。 AKS 上已啟用 GPU 的 Linux 節點集區最適合用於計算密集型工作負載,例如圖形轉譯、大型模型定型和推斷。

注意

計算成本會因區域而異。 挑選成本較低的區域來執行工作負載時,請瞭解延遲的潛在影響,以及數據傳輸成本。 若要深入瞭解 VM SKU 及其特性,請參閱 Azure 中虛擬機的大小。

使用叢集預設組態

預先挑選正確的 VM SKU、區域、節點數目和其他組態選項可能會很困難。 Azure 入口網站 中的叢集預設設定會卸除此初始挑戰,方法是為具有成本意識且高效能的不同應用程式環境提供建議的設定。 開發/測試預設最適合用來開發新的工作負載或測試現有的工作負載。 如果您的 工作負載可以容忍中斷,生產經濟 默認最適合以符合成本效益的方式為生產流量提供服務。 默認會關閉非關鍵功能,而且隨時都可以修改預設值。

考慮多租使用者

AKS 可讓您彈性地執行多租使用者叢集並隔離資源。 為了方便使用多租使用者,叢集和基礎結構可以透過 邏輯隔離在小組和業務單位之間共用。 Kube 命名空間構成了工作負載和資源的邏輯隔離界限。 共用基礎結構可減少叢集管理額外負荷,同時改善叢集內的資源使用率和 Pod 密度。 若要深入瞭解 AKS 上的多租使用者,以及判斷其是否適合組織需求,請參閱 多租使用者多租用戶設計叢集的 AKS 考慮。

警告

Kubernetes 環境對於惡意多租使用者而言並不完全安全。 如果共用基礎結構上有任何租用戶無法信任,則需要額外的規劃,以防止租用戶影響其他服務的安全性。

請考慮 實體隔離 界限。 在此模型中,小組或工作負載會指派給自己的叢集。 增加管理和財務負擔將是取捨。

建置雲端原生應用程式

讓您的容器盡可能精簡

精簡容器是指優化容器化應用程式的大小和資源使用量。 檢查您的基底映像是否最少,且只包含必要的相依性。 拿掉任何不必要的連結庫和套件。 較小的容器映像可加速部署時間,並提升調整作業效率。 更進一步, AKS 上的成品串流可讓您從 Azure Container Registry (ACR) 串流容器映像。 它只會提取初始 Pod 啟動所需的層,將較大型影像的提取時間從分鐘縮短為秒。

強制執行資源配額

資源配額 提供一種方式來保留和限制整個開發小組或項目的資源。 配額是在命名空間上定義,而且可以在計算資源、記憶體資源和物件計數上設定。 當您定義資源配額時,會防止個別命名空間耗用比配置的更多資源。 對於小組共用基礎結構的多租使用者叢集來說,這特別重要。

使用叢集啟動停止

小型開發和測試叢集會在無人看管時實現大量不必要的支出。 使用叢集啟動和停止,關閉不需要隨時執行的叢集。 這麼做會關閉所有系統和用戶節點集區,因此您不需要支付額外的計算費用。 當您再次啟動叢集時,將會維護所有物件和叢集狀態。

使用容量保留

容量保留可讓您在 Azure 區域或可用性區域中保留任何持續時間的計算容量。 保留容量將可供立即使用,直到刪除保留為止。 將現有的容量保留群組與節點集區建立關聯,可確保為節點集 區配置容量,並協助您避免在高計算需求期間可能發生隨選定價尖峰。

監視您的環境和支出

使用 Microsoft 成本管理提高可見度

Microsoft 成本管理 提供一組廣泛的功能,可協助處理叢集內外成本的雲端預算、預測和可見度。 適當的可見度對於破譯支出趨勢、識別優化機會,以及增加應用程式開發人員和平臺小組之間的責任至關重要。 透過 Kubernetes 建構以及 Azure 計算、網路和 儲存體 類別,啟用 AKS 成本分析附加元件,以進行細微叢集成本分解。

Azure 監視器

如果您要透過容器深入解析擷取計量數據,建議您移轉至受控 Prometheus 計量,這可大幅降低成本。 您可以使用資料收集規則 (DCR) 停用容器深入解析計量,並部署受控 Prometheus 附加元件,其支援透過 Azure Resource Manager、Azure CLI、Azure 入口網站 和 Terraform 進行設定。

如果您依賴記錄擷取,我們也建議使用基本記錄 API 來降低 Log Analytics 成本。 若要深入瞭解,請參閱 Azure 監視器最佳做法 和管理 容器深入解析的成本。

透過自動調整將工作負載優化

啟用應用程式自動調整

垂直 Pod 自動調整

明顯高於實際使用量的要求和限制可能會導致過度布建的工作負載和浪費資源。 相反地,太低的要求和限制可能會導致節流和工作負載問題,因為記憶體不足。 垂直 Pod 自動調整程式 (VPA) 可讓您微調 Pod 所需的 CPU 和記憶體資源。 VPA 會根據歷程記錄容器使用量提供 CPU 和記憶體要求的建議值和限制,您可以手動設定或自動更新。 最適合具有變動資源需求的應用程式。

水準Pod自動調整

水準 Pod 自動調整程式 (HPA) 會根據觀察到的計量來動態調整 Pod 複本數目,例如 CPU 或記憶體使用率。 在高需求期間,HPA 會相應放大,新增更多 Pod 複本來分散工作負載。 在需求低的期間,HPA 會相應縮小,減少複本數目以節省資源。 最適合具有可預測資源需求的應用程式。

警告

您不應該在相同的 CPU 或記憶體計量上同時使用 VPA 與 HPA。 這種組合可能會導致衝突,因為兩個自動調整程式都會嘗試使用相同的計量來回應需求變化。 不過,您可以將 VPA 用於 CPU 或記憶體並將 HPA 用於自訂計量,以防止重疊,並確保每個自動調整程式著重於工作負載調整的不同層面。

Kube 事件導向自動調整

Kubernetes 事件驅動自動調整程式 (KEDA) 附加元件 可提供額外的彈性,根據符合應用程式行為的各種事件驅動計量進行調整。 例如,對於 Web 應用程式,KEDA 可以監視連入 HTTP 要求流量,並調整 Pod 複本數目,以確保應用程式保持回應。 針對處理作業,KEDA 可以根據消息佇列長度調整應用程式。 所有 Azure Scalers 都提供受控支援。

啟用基礎結構自動調整

叢集自動調整

為了跟上應用程式需求, 叢集自動調整程式 會監看因資源限制而無法排程的 Pod,並據以調整節點集區中的節點數目。 當節點沒有執行中的 Pod 時,叢集自動調整程式將會相應減少節點數目。 請注意,叢集自動調整程式配置檔設定會套用至叢集中所有已啟用自動調整程序的節點集區。 若要深入瞭解,請參閱 叢集自動調整程式最佳做法和考慮

節點自動布建

複雜的工作負載可能需要數個具有不同 VM 大小設定的節點集區,以配合 CPU 和記憶體需求。 正確選取和管理數個節點集區組態,會增加複雜度和作業額外負荷。 Node Autoprovision (NAP) 可簡化 SKU 選取程式,並根據擱置的 Pod 資源需求,決定以最有效率且符合成本效益的方式執行工作負載的最佳 VM 組態。

注意

如需其他調整最佳做法,請參閱 Azure Kubernetes Service (AKS) 中小型工作負載的效能和調整,以及 Azure Kubernetes Service 中大型工作負載的效能和調整最佳做法。

使用 Azure 折扣儲存

Azure 保留

如果您的工作負載可預測且存在一段較長的時間,請考慮購買 Azure 保留 ,以進一步降低您的資源成本。 相較於隨用隨付價格,Azure 保留會以一年或三年期的期限運作,提供高達 72% 的折扣。 保留會自動套用至相符的資源。 最適合致力於在長時間內在相同 SKU 和區域中執行的工作負載。

Azure 節省方案

如果您有一致的支出,但跨 SKU 和區域使用不同的資源,則 Azure 保留是不可行的,請考慮購買 Azure 節省方案。 與 Azure 保留一樣,Azure Savings Plans 會在一年或三年內運作,並自動套用至權益範圍內的任何資源。 不論 SKU 或區域為何,您承諾在計算資源上花費固定的每小時金額。 最適合使用不同資源和/或不同數據中心區域的工作負載。

Azure Hybrid Benefit

適用於 Azure Kubernetes Service 的 Azure Hybrid Benefit (AKS) 可讓您不需額外費用將內部部署授權最大化。 使用任何具有作用中軟體保證 (SA) 或合格訂用帳戶的內部部署授權,以降低成本在 Azure 上取得 Windows VM。

採用 FinOps 來建置節省成本的文化

財務營運 (FinOps) 是一項專業領域,結合了財務責任與雲端管理和優化。 其著重於推動財務、營運和工程小組之間的一致性,以瞭解和控制雲端成本。 FinOps 基金會已發行數個值得注意的專案:

  • FinOps Framework - 如何練習及實作 FinOps 的作業模型。
  • FOCUS 規格 - 所有主要雲端提供者服務之雲端使用量、成本和計費數據的技術規格和開放標準。

下一步

成本優化是持續且反覆的工作。 檢閱下列建議和架構指引以深入瞭解: