成本最佳化是將資源的價值最大化,同時將雲端環境中不需要的費用降至最低。 此過程包括識別具成本效益的配置選項,並實施最佳實務以提升營運效率。 AKS 環境可以最佳化,以將成本降至最低,同時考量到效能和可靠性需求。
快速回答:AKS 成本優化的最佳實務是什麼?
- 先從 AKS Automatic 開始,內建成本優化功能,如節點自動配置和工作負載自動擴展
- 透過 VPA、HPA 和 KEDA 啟用動態調整,將資源與實際需求匹配
- 選擇使用即時虛擬機(Spot VMS)、Arm64 處理器或預留實例(最高節省% 72%)的成本效益基礎架構
- 透過 Microsoft 成本管理 監控支出,並遷移到 Azure 監視器 的 Prometheus 管理服務(管理型 Prometheus),以降低指標成本
- 透過 Reservations 利用 Azure 折扣、計算用 Azure 節省計畫,或長期工作負載的 Hybrid Benefit
在本文中,您會了解:
- 從 AKS Automatic 著手,實現內建的成本最佳化。
- 全面監視和 FinOps 做法。
- 策略性基礎結構選取項目。
- 動態調整規模和自動縮放。
- 有效率地使用 Azure 折扣節省大量成本。
從 AKS Automatic 開始,內建成本優化
AKS 自動 模式是一種叢集模式,預先配置了本文中描述的許多成本優化實務。 如果你正在建立新的叢集,可以考慮使用 AKS Automatic,以降低工程負擔、設定風險,以及持續導致不必要的雲端支出的營運開銷。
AKS Automatic 預設提供以下成本優化功能,無需額外設定:
| 能力 | 成本效益 |
|---|---|
| 節點自動配置(NAP) | 根據實際 pod 資源請求,自動為每個工作負載選擇最具成本效益的虛擬機 SKU。 消除手動節點池管理與過度配置。 |
| 工作負載自動擴展(VPA、HPA 與 KEDA) | 所有工作負載自動縮放器預設都是啟用的,因此 pod 和節點會根據實際需求動態擴展,而非根據峰值假設。 |
| 高效垃圾桶包裝 | Pod 的排程是為了最大化節點利用率,減少服務工作負載所需的節點總數。 |
| 管理普羅米修斯 | 受管理的 Prometheus 是預設的指標平台。 你避免了容器洞察指標較高的成本,且無需遷移作業。 |
| 部署保障措施 | Azure 原則 控制措施會在強制模式下,對所有 Pod 強制執行資源要求與限制,防止叢集層級發生不受控的資源消耗與過度佈建。 |
對於需要 AKS Standard 的工作負載,本文其餘部分將說明這些做法以及如何手動設定。 若 AKS Automatic 預設提供練習,則註解表示不需要額外步驟。
採用 FinOps 來建置節省成本的文化
財務營運 (FinOps) 是一個將財務責任與雲端管理和最佳化相結合的專業領域。 其著重於推動財務、營運和工程團隊之間的一致性,以了解和控制雲端成本。 FinOps 基礎有數個值得注意的專案,例如 FinOps Framework 和 FOCUS 規格。
如需詳細資訊,請參閱什麼是 FinOps?
選擇成本效益高的基礎設施與叢集配置
評估 SKU 系列
附註
若使用 AKS Automatic, 節點自動配置(NAP)會 根據每個工作負載的資源請求自動選擇最具成本效益的虛擬機 SKU。 你不需要手動評估、建立或管理節點池。
在部署前必須評估應用程式的資源需求。 小型開發工作負載與大型生產準備工作負載的基礎設施需求不同。 雖然 CPU、記憶體和網路容量設定的組合針對 SKU 成本效益具有極大影響,但請考慮下列虛擬機器 (VM) 類型:
| SKU 系列 | 描述 | 最適合用於 |
|---|---|---|
| Azure 點虛擬機器擴展集後置點點節點池,部署於單一故障域,且無高可用性或服務水準協議(SLA)保證。 Spot 虛擬機可讓您善用 Azure 中未使用的容量,享有大幅折扣(與隨用隨付價格相比,最高可達 90%)。 如果 Azure 需要收回容量,Azure 基礎結構會收回現成節點。 | 開發/測試環境、能處理中斷的工作負載(如批次處理工作),以及具備彈性執行時間的工作負載。 | |
| 以 Arm 為基礎的處理器 (Arm64) | Arm64 虛擬機在效能上既省電又具成本效益,且不犧牲效能。 透過 AKS 支援 Arm64 節點池,你可以建立 Arm64 Ubuntu 代理節點,並在叢集中混合 Intel 與 Arm 架構的節點。 這些虛擬機設計用於高效執行動態且可擴展的工作負載,並能提供比同類型 x86 虛擬機高出多達 50% 的性價比,適合擴展工作負載。 | 網頁或應用伺服器、開源資料庫、雲端原生應用程式、遊戲伺服器等等。 |
| GPU 最佳化 SKU | 根據你的工作負載性質,可以考慮使用運算優化、記憶體優化、儲存優化或 GPU 優化的虛擬機器 SKU。 GPU VM 大小是專用虛擬機器,可提供單一、多個和部分 GPU。 | AKS 上已啟用 GPU 的 Linux 節點集區最適合用於計算密集型工作負載,例如圖形轉譯、大型模型訓練和推斷。 |
附註
計算成本會因區域而異。 挑選成本較低的區域來執行工作負載時,請了解延遲的潛在影響,以及資料傳輸成本。 若要深入了解 VM SKU 及其特性,請參閱 Azure 中的虛擬機器大小。
檢閱儲存體選項
如需儲存體選項和相關成本考量的詳細資訊,請參閱下列文章:
使用叢集預設設定
挑選正確的 VM SKU、區域、節點數量和其他設定選項可能會很困難。 Azure入口網站中的Cluster預設配置透過提供針對不同應用環境且具成本效益的推薦配置,減輕了這個初期挑戰。 開發/測試預設最適合開發新工作負載或測試現有工作負載。 如果你的工作負載能容忍中斷,生產經濟預設最適合以節省成本的方式服務生產流量。 非關鍵功能預設是關閉的,你可以隨時修改預設值。
若想獲得超越靜態預設的全面方法,可以考慮 AKS 自動模式。 AKS Automatic 透過節點 自動配置(NAP)完全管理節點池,持續根據您的實際工作負載需求調整基礎設施規模。 它也會預設啟用所有工作負載自動調整器,並透過部署防護機制強制執行資源治理;這些都是叢集預設集所不具備的額外優點。
考慮多組織用戶管理
AKS 在多租戶叢集的運行與資源隔離方面提供彈性。 為了方便使用多組織用戶管理,您可以透過邏輯隔離來跨團隊和業務單位共用叢集和基礎結構。 Kube 命名空間構成了工作負載和資源的邏輯隔離界限。 共用基礎結構可減少叢集管理額外負荷,同時改善叢集內的資源使用率和 Pod 密度。 若要深入了解 AKS 上的多組織用戶管理,以及判斷其是否適合組織需求,請參閱多組織用戶管理的 AKS 考量,以及 多組織用戶管理設計叢集。
警告
就惡意多組織用戶管理而言,Kube 環境並不完全安全。 如果共用基礎結構上有無法信任的租用戶,則需要更多規劃,以防止該租用戶影響其他服務的安全性。
請考慮使用實體隔離界限。 在此模型中,小組或工作負載會指派至自己的叢集。 額外的管理與財務負擔是一種權衡取捨。
透過應用程式與叢集配置減少資源浪費
讓您的容器盡可能更精簡
精簡容器是指最佳化容器化應用程式的大小和資源使用量。 檢查您的基礎映像是否最小化,且只包含必要的相依性。 移除任何不必要的程式庫和套件。 較小的容器映像可加速部署時間,並提升調整作業的效率。 Artifact Streaming on AKS 讓你可以從 Azure Container Registry(ACR)串流容器影像。 該串流只會提取啟動初始 Pod 時所需的層,將較大型映像的提取時間從分鐘縮短為秒。
強制執行資源配額
附註
AKS 自動 叢集透過部署防護機制自動強制所有 pod 的資源請求與限制,這些 防護機制預設在執行模式下啟用。 這可避免資源無控消耗與過度配置,且不需手動設定政策。 對於 AKS 標準叢集,請依本節所述在命名空間層級設定資源配額。
資源配額提供保留及限制跨開發小組或專案資源的方式。 配額定義在命名空間上,並可設定於運算資源、儲存資源及物件數量。 當你定義資源配額時,個別命名空間不會消耗超過分配的資源。 資源配額適用於小組共用基礎結構的多租用戶叢集。
使用叢集啟動/停止
若不加以管理,小型開發與測試集群可能會產生不必要的成本。 您可以使用叢集啟動和停止功能,關閉不需要隨時執行的叢集。 此功能會關閉所有系統和使用者節點集區,因此您不需要支付額外的計算費用。 當您再次啟動叢集時,系統會維護叢集和物件的狀態。
使用容量保留
容量預留允許你在 Azure 區域或可用區域中保留計算容量,且可任意時間使用。 在刪除保留之前,保留容量可供立即使用。 將現有的容量保留群組與節點集區產生關聯會保證為節點集區配置容量,並協助您在高計算需求期間避開潛在隨選定價尖峰。
監視您的環境和支出
使用 Microsoft 成本管理提高可見度
Microsoft 成本管理提供一系列廣泛功能,可協助叢集內外成本的雲端預算、預測和可見度。 適當的可見度對於 破譯支出趨勢、識別最佳化機會,以及增加應用程式開發人員和平台團隊之間的責任至關重要。 啟用 AKS 成本分析附加元件,讓 Kubernetes 建構與 Azure 計算、網路和儲存體類別一同進行細微叢集成本分解。
Azure 監視器
附註
AKS 自動 叢集使用受管理的 Prometheus 作為預設的指標平台。 Container Insights 的指標預設未啟用。 如果你使用 AKS Automatic,這種成本優化已經完成,無需遷移步驟。
如果您要透過容器深入解析擷取計量資料,建議您移轉至可大幅降低成本的受控 Prometheus。 您可以使用資料收集規則 (DCR) 以停用容器深入解析計量,並部署受控 Prometheus 附加元件,其支援透過 Azure Resource Manager、Azure CLI、Azure 入口網站和 Terraform 進行設定。
如需詳細資訊,請參閱 Azure 監視器最佳做法, 和管理容器深入解析的成本。
Log Analytics
針對控制平面記錄,請考慮停用您不需要的類別和/或適用時使用基本記錄 API,以降低 Log Analytics 成本。 如需詳細資訊,請參閱 Azure Kubernetes Service (AKS) 控制平面/資源記錄。 對於資料平面日誌或應用程式日誌,請考慮調整 成本優化設定。
您也可以在 Azure 監視器中使用轉換 來篩選或修改控制平面和數據平面記錄,再傳送至 Log Analytics 工作區。 如需如何建立轉換的詳細資訊,請參閱 在 Azure 監視器中建立轉換。
Azure Advisor 成本建議
Azure Advisor 中的 AKS 成本建議會提供建議,協助您達到成本效益,而不犧牲可靠性。 Advisor 會分析您的資源設定,並建議優化解決方案。 如需詳細資訊,請參閱 在 Azure Advisor 中取得 Azure Kubernetes Service (AKS) 成本建議。
透過自動調整將工作負載最佳化
建立基準
設定自動調整設定之前,您可以使用 Azure 負載測試來建立應用程式的基準。 負載測試可協助您了解應用程式在不同流量狀況下的行為,並找出效能瓶頸。 有了基準之後,您可以設定自動調整設定,以確保應用程式可以處理預期的負載。
啟用應用程式自動調整
垂直 Pod 自動調整
附註
AKS 自動 叢集預設啟用了 VPA。 如果你使用 AKS 標準,請參考 使用Azure Kubernetes Service (AKS) 中的垂直 Pod 自動縮放器來啟用並設定 VPA。
高於實際使用量的要求和限制可能會導致過度佈建的工作負載和資源浪費。 相反地,過低的要求和限制可能會造成記憶體不足,進而導致節流和工作負載問題。 垂直 Pod 自動調整程式 (VPA) 可讓您微調 Pod 所需的 CPU 和記憶體資源。 VPA 會根據歷程記錄容器使用量提供 CPU 的建議值、記憶體要求和限制,您可以手動設定或自動更新這些內容。 最適合資源需求波動的應用。 VPA 的僅建議關閉模式允許團隊檢閱資源建議,而不需要自動強制執行這些建議。 您可以在測試期間啟用此模式,而 VPA 建議可用來設定生產環境的 CPU 和記憶體要求和限制。
水平 Pod 自動調整
水平 Pod 自動調整程式 (HPA) 會根據觀察到的計量來動態調整 Pod 複本數量,例如 CPU 或記憶體使用率。 在高需求期間,HPA 會相應增價,新增更多 Pod 複本來分散工作負載。 在低需求期間,HPA 會相應縮小,減少複本數量以節省資源。 最適合資源需求可預測的應用。
警告
您不應該在相同的 CPU 或記憶體計量上同時使用 VPA 與 HPA。 這種組合可能會導致衝突,因為兩個自動調整程式都會嘗試使用相同的計量來回應需求變化。 不過,您可以將 VPA 用於 CPU 或記憶體並將 HPA 用於自訂計量,以防止重疊,並確保每個自動調整程式著重於工作負載調整的不同層面。
Kubernetes 事件導向自動調整
附註
AKS 自動 叢集預設啟用了 KEDA。 如果你使用 AKS 標準,請參考 使用 Azure CLI安裝 KEDA 外掛以啟用 KEDA。
Kubernetes 事件驅動自動調整程式 (KEDA) 附加元件會根據符合應用程式行為的各種事件驅動計量進行調整,提供額外彈性。 例如,針對 Web 應用程式,KEDA 可以監視傳入的 HTTP 要求流量,並調整 Pod 複本數量,以確保應用程式保持主動回應。 針對處理工作,KEDA 可以根據消息佇列長度調整應用程式。 所有 Azure Scalers 都提供受控支援。 KEDA 也可讓您縮減為 0 個複本,特別有助於零星事件驅動工作負載、定期機器學習 (ML) 或 GPU 工作負載,以及開發/測試或低流量環境。
啟用基礎結構自動調整
叢集自動調整
附註
在 AKS Automatic 中,節點擴展由預設預設的節點自動配置(NAP)處理。 對於不含 NAP 的 AKS 標準,請依本節所述配置叢集自動縮放器。
為了跟上應用程式需求,叢集自動調整程式監視因資源限制而無法排程的 Pod,並據此調整節點集區中的節點數量。 當節點沒有執行中的 Pod 時,叢集自動調整程式將會相應減少節點數量。 叢集自動調整程式設定檔設定套用至叢集中所有已啟用自動調整程式的節點集區。 如需詳細資訊,請參閱叢集自動調整程式最佳做法和考量。
節點自動配置
附註
在 AKS Automatic 中,節點自動配置(NAP)預設為預設。 AKS 會自動為每個工作負載選擇最佳的虛擬機 SKU,無需手動建立節點池或選擇 SKU。 對於 AKS 標準叢集,請依照 AKS 中啟用或停用 NAP 中的步驟來啟用 NAP。
複雜的工作負載可能需要多個具有不同 VM 大小設定的節點集區,以容納 CPU 和記憶體需求。 正確選取和管理多個節點集區設定,會增加複雜度和作業額外負荷。 節點自動配置(NAP) 簡化了 SKU 選擇流程,並根據待處理的 Pod 資源需求決定最佳虛擬機配置,以最有效率且具成本效益的方式執行工作負載。
附註
如需調整最佳做法的詳細資訊,請參閱 Azure Kubernetes Service (AKS) 中小型工作負載的效能和調整和 Azure Kubernetes Service (AKS) 中大型工作負載的效能和調整最佳做法。
使用 Azure 折扣儲存
Azure Reservations
您的工作負載可預測且存在一段時間,請考慮購買 Azure 保留項目,以進一步降低您的資源成本。 Azure 保留項目提供一年或三年的期限,在計算資源方面,相較於隨用隨付價格提供了達 72% 的折扣。 保留會自動套用至相符的資源。 最適合那些長期致力於在同一 SKU 和區域內執行的工作負載。
Azure 計算節省方案
如果你的花費穩定,但因為不同 SKU 和區域資源使用差異,導致 Azure 預約無法實現,可以考慮購買 Azure 的計算節省計畫。 與 Azure 預約一樣,儲蓄計畫以一年或三年期限運作,並自動適用於福利範圍內的任何資源。 無論 SKU 或區域為何,您承諾每小時在計算資源上花費固定金額。 最適合使用不同資源和/或不同資料中心區域的工作負載。
Azure Hybrid Benefit
Azure Hybrid Benefit for Azure Kubernetes Service (AKS) 可讓您無需支付額外費用即可將內部部署授權最大化。 使用任何合格且具有作用中軟體保證 (SA) 或合格訂用帳戶的內部部署授權,以較低的成本在 Azure 上取得 Windows VM。
後續步驟
成本最佳化是持續且反覆進行的工作。 檢閱下列建議和架構指引以深入了解:
- 什麼是 AKS Automatic? - 預設內建成本優化功能,並提供完整管理的叢集體驗。
- 適用於 AKS 的 Microsoft Azure Well-Architected Framework:成本最佳化設計原則
- 適用於 AKS 的基準結構
- 最佳化 AKS 上的計算成本
- AKS 成本最佳化技巧