共用方式為


Kubernetes 的成本管理

本文說明與 Amazon Elastic Kubernetes Service (EKS) 相比,Azure Kubernetes Service (AKS) 中的定價和成本管理。 其描述如何優化成本,並實作 AKS 叢集的成本治理解決方案。

備註

本文是一系列文章的一部分,可協助熟悉 Amazon EKS 的專業人員瞭解 Azure Kubernetes Service (AKS)。

Amazon EKS 成本基本概念

針對 Amazon EKS,您每小時會為每個 Amazon EKS 叢集支付固定價格。 您也會為叢集所使用的網路、作業工具和記憶體付費。

Amazon EKS 背景工作節點是標準 Amazon EC2 實例,這表示它們會產生與一般 EC2 價格相同的成本。 您也需要支付為運行 Kubernetes 工作節點而配置的其他 Amazon Web Services (AWS) 資源的費用。

Amazon EKS 受控節點群組 不會產生額外費用。 您只需支付您布建的 AWS 資源費用。 這些資源包括 Amazon EC2 實例、Amazon Elastic Block Store 磁碟區、Amazon EKS 叢集時數和其他 AWS 基礎結構。

當您建立受控節點群組時,您可以使用 隨選實例或現成實例容量類型 來管理代理程序節點的成本。 Amazon EKS 會部署受控節點群組,其中包含所有隨選實例或所有現成實例的 Amazon EC2 自動調整群組

隨選實例會產生每秒的計算資源成本,不需長期承諾。 Amazon EC2 競價型執行個體是尚未被使用的 Amazon EC2 容量,其成本相較於隨選執行個體更低。

  • Amazon EC2 現成實例可能會中斷。 當 Amazon EC2 需要其他地方的容量時,您會收到兩分鐘的中斷通知。

  • Amazon 提供稱為 Spot Fleet 和 Spot Instance Advisor 的工具。 Spot Fleet 是一種方法,可將隨選實例和現成實例群組自動化。 這些工具可協助預測哪些區域或可用性區域提供最少的中斷。

  • AWS 現成實例價格會有所不同。 AWS 會根據現成實例容量的長期供需趨勢來設定價格。 您會支付實例運作期間生效的價格。

AKS 成本分析

AKS 叢集依賴各種 Azure 資源,例如虛擬機(VM)、虛擬磁碟、負載平衡器和公用 IP 位址。 多個應用程式可以使用這些資源。 組織內的不同小組可能會管理每個應用程式。 這些資源的耗用量模式可能會有所不同,這會導致對叢集資源總成本做出不同的貢獻。 某些應用程式可能會跨越多個叢集,這可能會使成本屬性和管理複雜化。

針對叢集包含單一工作負載的案例,請使用 Microsoft成本管理 來測量叢集資源群組下的叢集資源耗用量。 某些案例需要成本管理以外的其他解決方案,例如需要:

  • 資源使用量的細微明細,例如計算、網路和記憶體。

  • 區分個別應用程式成本和共用成本。

  • 在同一訂用帳戶範圍內,分析多個叢集的成本。

為了增強成本可檢視性,AKS 會與成本管理整合,以提供 Kubernetes 建構的詳細成本明細,例如叢集和命名空間層級。 此整合可跨 Azure 計算、網路和記憶體類別進行成本分析。

AKS 成本分析附加元件建置在 OpenCost 上,這是使用方式數據收集的開放原始碼專案。 附加元件會協調數據與您的 Azure 發票,以提供成本可見度。 您可以在成本管理成本分析入口網站中檢視後續處理的數據。 如需詳細資訊,請參閱 AKS 成本分析

成本定義

Kubernetes 命名空間和資產檢視畫面會顯示以下費用:

  • 閑置費用 代表工作負載不使用的可用資源容量成本。

  • 服務費用 代表與服務相關聯的費用,例如正常運行時間服務等級協議(SLA)和適用於容器的Microsoft Defender費用。

  • 系統費用 代表 AKS 在每個節點上保留的容量成本,以執行叢集所需的系統進程。

  • 未配置的費用 代表無法配置給命名空間的資源成本。

AKS 成本基本概念

Kubernetes 架構包含兩個層級:控制平面和至少一個節點或節點集區。 AKS 定價模型是以這些層級為基礎。

控制 平面 提供 核心 Kubernetes 服務,例如 API 伺服器和 etcd,以及應用程式工作負載協調流程。 Azure 平臺會管理 AKS 控制平面。 在 AKS 免費層中,控制平面不會產生成本

節點,也稱為代理程序節點背景工作節點,裝載 Kubernetes 工作負載和應用程式。 在 AKS 中,客戶完全管理和支付代理程式節點的所有成本。

下圖顯示 AKS Kubernetes 架構中控制平面與節點之間的關聯性。

顯示 AKS 架構中控制平面和節點的圖表。

控制平面

當您建立 AKS 叢集時,Azure 會自動布建並設定控制平面層。

針對較高的控制平面 SLA,您可以在 標準層中建立 AKS 叢集。 標準層包含運行時間 SLA,並針對每個叢集啟用它。 定價為每一個叢集每小時 $0.10 美元。 如需詳細資訊,請參閱 AKS 定價詳細數據

標準層中的叢集有更多控制平面資源,包括較多的 API 伺服器實例、提高的資源限制、最多達 5,000 個節點的延展性,以及具備財務保證的正常運行時間 SLA 支援。 AKS 會跨更新和容錯網域使用主要節點複本,以符合可用性需求。

若要提供更高的控制平面元件可用性,請使用生產工作負載中的標準層。 免費層叢集的復本較少,且控制平面資源有限,因此不適合生產工作負載。

節點

您可以使用 AKS 在一個或多個節點池中建立代理或工作者節點。 節點集區可以在 Kubernetes 環境中使用許多 Azure 核心功能。 AKS 只會針對連結至 AKS 叢集的節點收費。

AKS 節點會使用數個 Azure 基礎結構資源,包括虛擬機擴展集、虛擬網路和受控磁碟。 例如,您可以直接在 AKS 內使用大部分的 Azure VM 類型。 使用 Azure 保留Azure 節省方案進行計算 ,以取得這些資源的折扣。

AKS 叢集定價是以節點集區中 VM 的類別、數目和大小為基礎。 VM 成本取決於可用的大小、CPU 類型、vCPU 數目、記憶體、系列和記憶體類型。 記憶體類型包括高效能的 Azure 標準 SSD 或 Azure 標準 HDD。 如需詳細資訊,請參閱 VM 系列。 根據應用程式需求、節點數目和叢集延展性需求,規劃您的節點大小。

如需詳細資訊,請參閱 節點集 區和 在 AKS 中建立和管理叢集的多個節點集區。

AKS 叢集部署

每個 AKS 部署跨越兩個 Azure 資源群組。

  • 您建立第一個資源群組,其中只包含 Kubernetes 服務資源,而且不會產生成本。

  • AKS 資源提供者會在部署期間自動建立第二個資源群組,也稱為 節點資源群組。 此資源群組的預設名稱是 MC_<resourcegroupname>_<clustername>_<location>,但您可以指定另一個名稱。 如需詳細資訊,請參閱 為 AKS 節點資源群組提供我自己的名稱。

    節點資源群組包含叢集基礎結構資源。 此資源群組會在您的訂用帳戶中產生費用。 資源包括 Kubernetes 節點 VM、虛擬網路、記憶體和其他服務。 AKS 會在刪除叢集時自動刪除節點資源群組。 因此,您應該只將它用於共用叢集生命周期的資源。

計算成本

您會根據其大小和使用量來支付 Azure VM 的費用。 如需詳細資訊,請參閱 Azure 和 AWS 上的計算服務

一般而言,節點集區的 VM 大小越大,代理程序節點的每小時成本就越高。 節點集區的 VM 系列愈特製化,集區成本就越高。 專業化包括支援圖形處理單元(GPU)的虛擬機或記憶體優化的虛擬機。

請考慮 Azure VM 定價的下列層面:

  • 每個區域的定價不同,並非所有區域都支援所有服務和 VM 大小。

  • 不同的 VM 系列已針對不同類型的工作負載進行優化。

  • 您作為 OS 磁碟驅動器使用的受控磁碟會個別收費。 您必須將其成本新增至您的估計值。 受控磁碟大小取決於 類別,例如標準 HDD、標準 SSD、Azure 進階 SSD 或 Azure Ultra 磁碟記憶體。 MBps 中的每秒輸入/輸出作業 (IOPS) 和輸送量取決於大小和類別。 VM 價格包括 暫時的 OS 磁碟

  • 數據磁碟,包括由持久性卷宣告創建的數據磁碟,是可選的。 數據磁碟會根據其類別個別收費,例如標準 HDD、標準 SSD、進階 SSD 和 Ultra 磁碟記憶體。 您必須明確地將數據磁碟新增至成本估計。 MBps 中允許的數據磁碟、暫存記憶體 SSD、IOPS 和輸送量數目取決於 VM 大小和類別。

  • 代理程式節點的運作時間越長,叢集總成本就越高。 開發環境通常不需要持續執行。

  • 網路適配器 (NIC) 是免費的。

儲存體費用

容器記憶體介面 (CSI) 是將區塊和檔案記憶體系統公開至 Kubernetes 上容器化工作負載的標準。 AKS 可以使用 CSI 來撰寫、部署和反覆運算外掛程式,以公開 Kubernetes 記憶體系統,而不需要觸及核心 Kubernetes 程式代碼或等待其發行週期。

如果您在 AKS 叢集上執行使用 CSI 永續性磁碟區的工作負載,請考慮應用程式佈建和使用之記憶體的相關成本。 AKS 上的 CSI 記憶體驅動程式提供下列記憶體選項的原生支援:

  • Azure 磁碟儲存 會建立 Kubernetes 資料磁碟資源。 磁碟可以使用由進階 SSD 支援的 Azure 進階儲存體,或使用由標準 HDD 或標準 SSD 支援的 Azure 標準儲存體。 大部分的生產與開發工作負載都會使用進階記憶體。 Azure 磁碟會掛接為 ReadWriteOnce,讓它們只能供一個 AKS 節點使用。 針對多個 Pod 可以同時存取的存放磁碟區,請使用 Azure Files。 如需詳細資訊,請參閱 受控磁碟定價

  • Azure 檔案服務 會將伺服器訊息區塊 (SMB) 3.0 和 3.1 檔案共用掛載至您的 AKS Pod。 檔案共用是由 Azure 記憶體帳戶所支援。 您可以跨多個節點和 Pod 共享數據。 Azure 檔案服務可以使用標準 HDD 支援的標準儲存體,或使用高效能 SSD 支援的高效能儲存體。 Azure 檔案會使用儲存體帳戶,並根據下列因素計算費用:

    • 此服務,例如 Azure Blob 儲存、Azure 檔案儲存、Azure 佇列儲存、Azure 資料表儲存或非受管理的磁碟

    • 記憶體帳戶類型,例如 GPv1、GPv2、Blob 或進階 Blob

    • 復原層級,例如本地備援記憶體 (LRS)、區域備援記憶體 (ZRS)、異地備援記憶體 (GRS) 或讀取許可權異地備援記憶體 (RA-GRS)

    • 存取層,例如熱存取層、冷存取層或封存層

    • 作業和數據傳輸

    • 已使用容量(以 GB 計)

  • Azure NetApp Files 有數個 SKU 層。 它至少需要 4 TiB 的布建容量,您可以每次增加 1 TiB。 Azure NetApp Files 費用是以下列因素為基礎:

    • The SKU

    • 彈性層級,例如 LRS、ZRS 或 GRS

    • 布建的大小或容量,而不是使用的容量

    • 作業和數據傳輸

    • 備份和還原

網路成本

數個 Azure 網路工具可以存取在 AKS 中執行的應用程式:

  • Azure Load Balancer:根據預設,Load Balancer 會使用標準 SKU。 Load Balancer 費用是以下列為基礎:

    • 已設定的負載平衡和輸出規則數目。 規則總數不包含輸入網路位址轉換 (NAT) 規則。

    • 輸入和輸出處理的數據量,與規則無關。 標準負載平衡器沒有設定規則的每小時費用。

  • Azure 應用程式閘道:AKS 通常會透過 應用程式閘道輸入控制器使用應用程式閘道。 或者,您可以使用手動管理的應用程式閘道實例,為不同的輸入控制器提供前端。 應用程式閘道 支援閘道路由、傳輸層安全性 (TLS) 終止和 Web 應用程式防火牆 功能。 應用程式閘道 費用是以下列為基礎:

    • 固定價格。 您需支付應用程式閘道執行的每個小時或部分小時。

    • 容量單價。 視應用程式閘道所使用的資源而定,您需支付額外的耗用量型成本。 每個容量單位最多可有一個計算單位、2,500 個持續性連線,以及 2.22-Mbps 輸送量。

  • 公用IP位址:公用IP位址的成本取決於:

    • 保留與動態關聯。

    • 基本層與高度安全與區域備援標準層的比較。

向外延展成本

您可以使用下列選項來調整 AKS 叢集,以將額外的容量新增至節點集區:

  • 視需要,您可以手動更新屬於節點集區一部分的 VM 數目,或新增更多節點集區。

  • AKS 叢集自動調整程式 會監視因資源受限而無法在節點上排程的 pods,並自動增加節點數目。

  • AKS 支援透過 虛擬 kubelet 實作,在 Azure 容器執行個體 上執行容器。 AKS 虛擬節點能布建並在幾秒內啟動的容器實例 Pod,這讓 AKS 可以用剛好足夠的容量來應對平均工作負載。 當 AKS 叢集達到其容量限制時,您可以擴充更多容器實例 Pod,而不需要管理額外的伺服器。 您可以將此方法與叢集自動調整程式和手動調整方法結合。

如果您使用隨需調整或叢集自動調整器,請考慮新增的虛擬機器。 容器執行個體的費用是根據以下因素計算的:

  • 基於使用指標的每個容器群組計費
  • 收集 vCPU 和記憶體
  • 單一容器使用或多個容器共用
  • 使用共用網路和節點生命週期的共同排程容器
  • 從映像提取啟動或重新啟動計算的使用量持續時間,直到停止為止
  • 已新增 Windows 容器群組的費用

升級成本

AKS 叢集生命週期的一部分牽涉到定期升級至最新的 Kubernetes 版本。 套用最新的安全性版本並取得最新的功能。 您可以手動或自動升級 AKS 叢集和單一節點集區。 如需詳細資訊,請參閱 升級 AKS 叢集

根據預設,AKS 會設定升級以包含一個額外的節點。 設定的 1 預設值max-surge會將工作負載中斷降至最低。 此配置會創建一個額外的節點,以在標記或排空現有應用之前替換舊版本的節點。 您可以自訂 max-surge 的每個節點集區值,以平衡升級速度和減少中斷。 較高的 max-surge 值可加速升級程式,但可能會導致更多中斷,並增加額外 VM 的成本。

其他成本

根據使用量和需求,AKS 叢集可能會產生下列額外成本:

成本優化

下列建議可協助您優化 AKS 叢集成本:

  • 檢閱 Azure Well-Architected Framework for AKS 的 成本優化章節。

  • 針對多租使用者解決方案,實體隔離會增加成本和管理額外負荷。 邏輯隔離需要更多 Kubernetes 經驗,並增加變更和安全性威脅的範圍,但會共用成本。

  • Azure 預訂 可幫助您節省費用。 如果想要獲得折扣,您可以承諾選擇數項產品的一年或三年期方案,例如 AKS 叢集中的虛擬機器。 使用 Azure 預留方案來降低代理節點的成本,適用於 存儲計算

    相較於隨用隨付價格,保留可以降低高達 72% 的資源成本。 它們不會影響資源的運行時間狀態。 當您購買預訂後,折扣會自動套用至相符的資源。 若要從 Azure 入口網站購買保留,請使用 Azure REST API、Azure PowerShell 或 Azure CLI。 如果您使用依賴於 Log Analytics 工作區 的操作工具,請考慮為此儲存體使用保留訂閱。

  • 將一或多個現成節點集區新增至 AKS 叢集。 現成節點集區是 適用於 Azure 現成虛擬機支援的節點 集區。 當您針對 AKS 叢集節點使用現成 VM 時,可以降低成本來利用未使用的 Azure 容量。 可用未使用的容量數量會根據數個因素而有所不同,包括節點大小、區域和一天中的時間。 如果容量可用,Azure 會配置現成節點,但現成節點沒有 SLA。 備份現成節點集區的現成擴展集會部署在單一容錯網域中,且不提供高可用性保證。 當 Azure 需要容量時,Azure 基礎結構會收回 Spot 節點。

    當您建立現成節點集區時,您應該定義每小時支付的最高價格,並啟用叢集自動調整程式。 自動調整程序會根據運行負載動態調整節點池中的節點數目,實現擴容和縮容。 對於 Spot 節點集區,如果這些節點仍然需要,叢集自動調整程序會在節點被驅逐後擴展節點數。 如需更多資訊,請參閱 將現貨節點池新增至 AKS 叢集

  • 根據您的工作負載的CPU和記憶體需求,為您的AKS叢集節點集區選擇正確的 VM大小 。 Azure 針對各種使用案例提供許多不同的 VM 實例類型。 它們有不同的 CPU、記憶體、記憶體和網路容量組合。 每個 VM 類型都會有一或多個大小,因此您可以輕鬆地調整資源。

    您可以使用 AKS 來部署和管理在 Ampere Altra ARM 處理器上執行的容器化應用程式

  • 針對特殊用途和工作負載,建立具有不同 VM 大小的多個節點集區。 使用 Kubernetes 污點、容忍和節點標籤,在特定 節點 集區上放置資源密集型應用程式,以避免發生雜亂的鄰近問題。 讓這些節點資源可供需要它們的工作負載使用,且不會在這些節點上排程其他工作負載。 若要將成本優化,請針對不同的節點集區使用不同的 VM 大小。 如需詳細資訊,請參閱 在 AKS 中使用多個節點集區

  • 系統模式節點集區必須至少包含一個節點。 使用者模式節點集區可以包含零個或多個節點。 可能的話,您可以設定使用者模式節點集區,以自動從 0 調整為 N 節點。 若要將工作負載設定為水平擴展和水平縮減,請使用水平Pod自動調整器。 根據 CPU 和記憶體來判斷您的自動調整需求。 或者,使用 Kubernetes 事件驅動自動調整 (KEDA) 根據外部系統的計量實作自動調整,例如 Apache Kafka、RabbitMQ 或 Azure 服務總線。

  • 為 Pod 正確設定 要求和限制 ,以改善應用程式密度,並避免將太多 CPU 和記憶體資源指派給工作負載。 若要檢視 CPU 和記憶體的平均和最大耗用量,請使用 Prometheus 或容器深入解析。 在 YAML 配置檔、Helm 圖表和 Kustomize 配置檔中正確設定執行個體的限制和配額,以利您的部署。

  • 使用 ResourceQuota 物件,為指定 命名空間中執行的所有 Pod 設定記憶體總量和 CPU 的配額。 有系統地使用資源配額來避免雜訊鄰近問題、改善應用程式密度,並減少代理程式節點數目和總成本。 若要在命名空間中設定 Pod 的預設 CPU 和記憶體要求,請使用 LimitRange 物件。

  • 使用 容器執行個體 進行高載。

  • 您的 AKS 工作負載可能不需要持續執行。 例如,開發叢集節點集區中的某些工作負載不會持續執行。 若要將成本優化,您可以完全關閉 AKS 叢集,或停止 AKS 叢集中的一或多個節點集區。 如需詳細資訊,請參閱 停止和啟動 AKS 叢集啟動和停止 AKS 上的節點集區。

  • Azure 原則 透過內建原則與 AKS 整合,以套用集中式、一致、大規模強制執行和保護措施。 啟用叢集的 Azure 原則附加元件,以套用預設 CPU 要求和限制和 記憶體資源限制。 這項功能有助於確保叢集容器已定義 CPU 和記憶體資源限制。

  • 使用 Azure Advisor 來監視和釋放未使用的資源。

  • 使用 成本管理 預算和檢閱來追蹤支出。

成本治理

雲端可以大幅改善商務工作負載的技術效能。 雲端技術也可以降低管理組織資產的成本和額外負荷。 不過,此商機也會造成風險,因為雲端部署可能會增加浪費和效率低下。

成本治理是持續實作原則或控件以限制支出和成本的程式。 原生 Kubernetes 工具和 Azure 工具都支援成本控管,方法是提供主動式監視和基礎結構成本優化。

  • 成本管理 是一套Microsoft工具,可協助您分析、管理及優化 Azure 工作負載成本。 使用工具來協助確保您的組織利用雲端所提供的優點。

  • 檢閱 適用於 Azure 治理的雲端採用架構 最佳做法,以進一步瞭解如何管理和管理雲端成本。

  • 探索 KubeCost 之類的開放原始碼工具,以監視和管理 AKS 叢集成本。 您可以根據部署、服務、標籤、Pod 或命名空間來設定成本配置範圍,以彈性顯示和收取叢集用戶的費用。

貢獻者們

本文由 Microsoft 維護。 下列參與者撰寫本文。

主要作者:

其他貢獻者:

若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。

後續步驟