在 Azure Kubernetes Service (AKS) 中最佳化成本
成本最佳化是將資源的價值最大化,同時將雲端環境中不需要的費用降至最低。 此流程牽涉到識別符合成本效益的設定選項,並實作最佳做法以改善作業效率。 AKS 環境可以最佳化,以將成本降至最低,同時考量到效能和可靠性需求。
在本文中,您會了解:
- 策略性基礎結構選取項目。
- 動態調整規模和自動縮放。
- 有效率地使用 Azure 折扣節省大量成本。
- 全面監視和 FinOps 做法。
準備應用程式環境
評估 SKU 系列
在部署前必須評估應用程式的資源需求。 小型開發工作負載的基礎結構需求與大型生產就緒工作負載不同。 雖然 CPU、記憶體和網路容量設定的組合針對 SKU 成本效益具有極大影響,但請考慮下列虛擬機器 (VM) 類型:
SKU 系列 | 描述 | 使用案例 |
---|---|---|
Azure Spot 虛擬機器 | Azure Spot Virtual Machine 擴展集會備份現成節點集區,並部署至沒有高可用性或服務等級協定 (SLA) 保證的單一容錯網域。 現成 VM 可讓您利用未使用 Azure 容量和可觀的折扣 (相較於隨用隨付價格,折扣最高可至 90%)。 如果 Azure 需要收回容量,Azure 基礎結構會收回現成節點。 | 最適合開發/測試環境、可處理中斷的工作負載,例如批次處理作業,以及具有彈性執行時間的工作負載。 |
Ampere Altra Arm 型處理器 (Arm64) | Arm64 VM 省電且符合成本效益,但不會減損效能。 透過 AKS 中的 Arm64 節點集區支援,您可以建立 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 考量,以及 多組織用戶管理設計叢集。
警告
就惡意多組織用戶管理而言,Kube 環境並不完全安全。 如果共用基礎結構上有無法信任的租用戶,則需要更多規劃,以防止該租用戶影響其他服務的安全性。
請考慮使用實體隔離界限。 在此模型中,小組或工作負載會指派至自己的叢集。 增加管理和財務負擔將會是權衡取捨。
建置雲端原生應用程式
讓您的容器盡可能更精簡
精簡容器是指最佳化容器化應用程式的大小和資源使用量。 檢查您的基礎映像是否最小化,且只包含必要的相依性。 移除任何不必要的程式庫和套件。 較小的容器映像可加速部署時間,並提升調整作業的效率。 AKS 上的成品串流可讓您從 Azure Container Registry (ACR) 串流容器映像。 該串流只會提取啟動初始 Pod 時所需的層,將較大型映像的提取時間從分鐘縮短為秒。
強制執行資源配額
資源配額提供保留及限制跨開發小組或專案資源的方式。 配額會在命名空間上定義,並可設定計算資源、儲存體資源和物件計數的配額。 當您定義資源配額時,可防止個別命名空間消耗超過配置的資源。 資源配額適用於小組共用基礎結構的多租用戶叢集。
使用叢集啟動/停止
當無人參與時,小型開發/測試叢集可能會產生不必要的成本。 您可以使用叢集啟動和停止功能,關閉不需要隨時執行的叢集。 此功能會關閉所有系統和使用者節點集區,因此您不需要支付額外的計算費用。 當您再次啟動叢集時,系統會維護叢集和物件的狀態。
使用容量保留
容量預留可讓您在 Azure 區域或可用性區域中保留計算容量一段時間。 在刪除保留之前,保留容量可供立即使用。 將現有的容量保留群組與節點集區產生關聯會保證為節點集區配置容量,並協助您在高計算需求期間避開潛在隨選定價尖峰。
監視您的環境和支出
使用 Microsoft 成本管理提高可見度
Microsoft 成本管理提供一系列廣泛功能,可協助叢集內外成本的雲端預算、預測和可見度。 適當的可見度對於 破譯支出趨勢、識別最佳化機會,以及增加應用程式開發人員和平台團隊之間的責任至關重要。 啟用 AKS 成本分析附加元件,讓 Kubernetes 建構與 Azure 計算、網路和儲存體類別一同進行細微叢集成本分解。
Azure 監視器
如果您要透過容器深入解析擷取計量資料,建議您移轉至可大幅降低成本的受控 Prometheus。 您可以使用資料收集規則 (DCR) 以停用容器深入解析計量,並部署受控 Prometheus 附加元件,其支援透過 Azure Resource Manager、Azure CLI、Azure 入口網站和 Terraform 進行設定。
如需詳細資訊,請參閱 Azure 監視器最佳做法, 和管理容器深入解析的成本。
Log Analytics
針對控制平面記錄,請考慮停用您不需要的類別和/或適用時使用基本記錄 API,以降低 Log Analytics 成本。 如需詳細資訊,請參閱 Azure Kubernetes Service (AKS) 控制平面/資源記錄。 針對資料平面記錄或應用程式記錄,請考慮調整成本最佳化設定。
透過自動調整將工作負載最佳化
建立基準
設定自動調整設定之前,您可以使用 Azure 負載測試來建立應用程式的基準。 負載測試可協助您了解應用程式在不同流量狀況下的行為,並找出效能瓶頸。 有了基準之後,您可以設定自動調整設定,以確保應用程式可以處理預期的負載。
啟用應用程式自動調整
垂直 Pod 自動調整
高於實際使用量的要求和限制可能會導致過度佈建的工作負載和資源浪費。 相反地,過低的要求和限制可能會造成記憶體不足,進而導致節流和工作負載問題。 垂直 Pod 自動調整程式 (VPA) 可讓您微調 Pod 所需的 CPU 和記憶體資源。 VPA 會根據歷程記錄容器使用量提供 CPU 的建議值、記憶體要求和限制,您可以手動設定或自動更新這些內容。 最適合資源需求變動的應用程式。
水平 Pod 自動調整
水平 Pod 自動調整程式 (HPA) 會根據觀察到的計量來動態調整 Pod 複本數量,例如 CPU 或記憶體使用率。 在高需求期間,HPA 會相應增價,新增更多 Pod 複本來分散工作負載。 在低需求期間,HPA 會相應縮小,減少複本數量以節省資源。 最適合可預測資源需求的應用程式。
警告
您不應該在相同的 CPU 或記憶體計量上同時使用 VPA 與 HPA。 這種組合可能會導致衝突,因為兩個自動調整程式都會嘗試使用相同的計量來回應需求變化。 不過,您可以將 VPA 用於 CPU 或記憶體並將 HPA 用於自訂計量,以防止重疊,並確保每個自動調整程式著重於工作負載調整的不同層面。
Kubernetes 事件導向自動調整
Kubernetes 事件驅動自動調整程式 (KEDA) 附加元件會根據符合應用程式行為的各種事件驅動計量進行調整,提供額外彈性。 例如,針對 Web 應用程式,KEDA 可以監視傳入的 HTTP 要求流量,並調整 Pod 複本數量,以確保應用程式保持主動回應。 針對處理工作,KEDA 可以根據消息佇列長度調整應用程式。 所有 Azure Scalers 都提供受控支援。
啟用基礎結構自動調整
叢集自動調整
為了跟上應用程式需求,叢集自動調整程式監視因資源限制而無法排程的 Pod,並據此調整節點集區中的節點數量。 當節點沒有執行中的 Pod 時,叢集自動調整程式將會相應減少節點數量。 叢集自動調整程式設定檔設定套用至叢集中所有已啟用自動調整程式的節點集區。 如需詳細資訊,請參閱叢集自動調整程式最佳做法和考量。
節點自動佈建
複雜的工作負載可能需要多個具有不同 VM 大小設定的節點集區,以容納 CPU 和記憶體需求。 正確選取和管理多個節點集區設定,會增加複雜度和作業額外負荷。 節點自動佈建 (NAP) 簡化 SKU 選取項目流程和決定,並根據擱置的 Pod 資源需求來決定最佳 VM 設定,以最有效率且符合成本效益的方式執行工作負載。
注意
如需調整最佳做法的詳細資訊,請參閱 Azure Kubernetes Service (AKS) 中小型工作負載的效能和調整和 Azure Kubernetes Service (AKS) 中大型工作負載的效能和調整最佳做法。
使用 Azure 折扣儲存
Azure 保留
您的工作負載可預測且存在一段時間,請考慮購買 Azure 保留項目,以進一步降低您的資源成本。 Azure 保留項目提供一年或三年的期限,在計算資源方面,相較於隨用隨付價格提供了達 72% 的折扣。 保留會自動套用至相符的資源。 最適合承諾長期在相同 SKU 和區域中執行的工作負載。
Azure 節省方案
如果您的支出穩定,但因跨 SKU 和區域使用不同的資源,而使 Azure 保留項目無法實行,請考慮購買 Azure 節省方案。 如同 Azure 保留項目,Azure Savings Plans 提供一年或三年的期限,並自動套用至權益範圍內的任何資源。 無論 SKU 或區域為何,您承諾每小時在計算資源上花費固定金額。 最適合使用不同資源和/或不同資料中心區域的工作負載。
Azure Hybrid Benefit
Azure Hybrid Benefit for Azure Kubernetes Service (AKS) 可讓您無需支付額外費用即可將內部部署授權最大化。 使用任何合格且具有作用中軟體保證 (SA) 或合格訂用帳戶的內部部署授權,以較低的成本在 Azure 上取得 Windows VM。
採用 FinOps 來建置節省成本的文化
財務營運 (FinOps) 是一個將財務責任與雲端管理和最佳化相結合的專業領域。 其著重於推動財務、營運和工程團隊之間的一致性,以了解和控制雲端成本。 FinOps 基金會具有多個值得注意的專案,例如:
- FinOps Framework:如何實踐及實作 FinOps 的作業模型。
- FOCUS 規格:所有主要雲端提供者服務的雲端使用量、成本和計費資料的技術規格和開放標準。
下一步
成本最佳化是持續且反覆進行的工作。 檢閱下列建議和架構指引以深入了解: