Kubernetes 的成本管理

Azure 成本管理
Azure Kubernetes Service (AKS)
Azure 受控磁碟
Azure 儲存體
Azure 虛擬機器

本指南說明與 Amazon Elastic Kubernetes Service (Amazon EKS) 相比,Azure Kubernetes Service (AKS) 定價和成本管理的運作方式。 本文說明如何優化成本,並實作 AKS 叢集的成本控管解決方案。

注意

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

Amazon EKS 成本基本概念

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

Amazon EKS 背景工作節點是標準 Amazon EC2 實例,因此會產生一般 Amazon EC2 價格。 您也會支付其他 Amazon Web Services (AWS) 您布建的資源來執行 Kubernetes 背景工作節點。

使用 Amazon EKS 受控節點群組不需要額外成本。 您只需支付您所布建的 AWS 資源費用,包括 Amazon EC2 實例、Amazon EBS 磁片區、Amazon EKS 叢集時數,以及任何其他 AWS 基礎結構。

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

使用隨選實例時,您會支付第二個計算容量的費用,而不需要長期承諾。 相較于隨選價格,Amazon EC2 現成實例是提供折扣的 Amazon EC2 容量。

  • 當 EC2 需要容量時,Amazon EC2 Spot 實例可能會中斷,並出現兩分鐘的中斷通知。

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

  • AWS 現成實例價格會有所不同。 AWS 會根據現成實例容量的長期供應和需求趨勢來設定價格,而且您會支付實例啟動期間生效的價格。

AKS 成本基本概念

Kubernetes 架構是以兩層為基礎,控制平面和一或多個節點或節點集區。 AKS 定價模型是以兩個 Kubernetes 架構層為基礎。

  • 控制平面提供核心 Kubernetes 服務,例如 API 伺服器和 etcd 和 應用程式工作負載協調流程。 Azure 平臺會管理 AKS 控制平面,而針對 AKS 免費層,控制平面 不需要任何成本

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

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

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

控制平面

當您建立 AKS 叢集時,Azure 會自動布建及設定控制平面層。 針對 AKS 免費層,控制平面是免費的。

對於較高的控制平面服務等級協定 (SLA) ,您可以在 標準層中建立 AKS 叢集。 執行時間 SLA 預設包含在標準層中,且會針對每個叢集啟用。 定價是每小時每個叢集 $0.10 美元。 如需詳細資訊,請參閱 AKS 定價詳細資料

標準層中的叢集有更多控制平面資源,例如 API 伺服器實例數目、Etcd 資源限制、 最多 5,000 個節點的延展性,以及現有的財務支援的執行時間 SLA 支援。 AKS 會跨更新和容錯網域使用主要節點複本,以符合可用性需求。

最好在生產工作負載中使用標準層,以提供較高的控制平面元件可用性。 免費層叢集的複本較少且控制平面資源有限,不建議用於生產工作負載。

節點

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

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

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

如需代理程式節點和節點集區的詳細資訊,請參閱此系列中的節點集區一文,以及建立和管理 Azure Kubernetes Service (AKS) 中叢集的多個節點集區。

AKS 叢集部署

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

  • 您可以建立第一個資源群組,其中只包含 Kubernetes 服務資源,而且沒有任何與其相關聯的成本。

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

    節點資源群組包含所有叢集基礎結構資源,而且是顯示訂用帳戶費用的叢集資源。 這些資源包括 Kubernetes 節點 VM、虛擬網路、儲存體和其他服務。 AKS 會在刪除叢集時自動刪除節點資源群組,因此您應該只將它用於共用叢集生命週期的資源。

計算成本

您會根據其大小和使用量支付 Azure VM 的費用。 如需 Azure 計算與 AWS 的比較方式的相關資訊,請參閱 Azure 和 AWS 上的計算服務

一般而言,您為節點集區選取的 VM 大小愈大,代理程式節點的每小時成本就越高。 您用於節點集區的 VM 系列更特製化,例如圖形處理單位 (GPU) 啟用或記憶體優化,集區的成本就越高。

調查 Azure VM 定價時,請注意下列幾點:

  • 每個區域的價格不同,並非所有服務和 VM 大小都可在每個區域中使用。

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

  • 作為 OS 磁片磁碟機的受控磁片會個別收費,您必須將其成本新增至估計值。 受控磁片大小取決於 類別,例如標準 HDD、標準 SSD、進階 SSD 或 Ultra SSD。 每秒的輸入輸出作業 (IOPS) 和輸送量取決於大小和類別。 暫時 OS 磁片是免費的, 且包含在 VM 價格中。

  • 資料磁片包括使用永續性磁片區宣告所建立的資料磁片是選擇性的,而且會根據其類別個別收費,例如標準 HDD、標準 SSD、進階 SSD 和 Ultra SSD。 您必須明確地將資料磁片新增至成本估計。 允許的資料磁片、暫存儲存體 SSD、IOPS 和輸送量數目取決於 VM 大小和類別。

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

  • (NIC) 網路介面是免費的。

儲存體成本

容器儲存體介面 (CSI) 是將區塊和檔案儲存體系統公開至 Kubernetes 上容器化工作負載的標準。 藉由採用和使用 CSI,AKS 可以撰寫、部署及逐一查看外掛程式,以公開 Kubernetes 儲存系統,而不需觸碰核心 Kubernetes 程式碼或等候其發行週期。

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

  • Azure 磁片 會建立 Kubernetes 資料磁片資源。 Azure 磁碟可以使用採用高效能 SSD 的 Azure 進階儲存體,或是採用一般 HDD 或標準 HDD 的 Azure 標準儲存體。 大部分的生產與開發工作負載都會使用 進階儲存體。 Azure 磁片會掛接為 ReadWriteOnce ,讓它們只能供一個 AKS 節點使用。 對於多個 Pod 可以同時存取的儲存體磁片區,請使用Azure 檔案儲存體。 如需成本資訊,請參閱受控磁碟定價

  • Azure 檔案儲存體會將由 Azure 儲存體帳戶支援的 SMB) 3.0/3.1 檔案共用掛接至 AKS Pod (伺服器傳訊區塊。 您可以在多個節點和 Pod 之間共用資料。 Azure 檔案儲存體可以使用標準儲存體支援的一般 HDD,或高效能 SSD 支援的進階儲存體。 Azure 檔案儲存體使用 Azure 儲存體帳戶,並根據下列因素產生費用:

    • 服務:Blob、檔案、佇列、資料表或非受控磁片
    • 儲存體帳戶類型:GPv1、GPv2、Blob 或進階 Blob
    • 復原:本機備援儲存體 (LRS) 、區域備援儲存體 (ZRS) 、異地備援儲存體 (GRS) 或讀取權限異地備援儲存體 (RA-GRS)
    • 存取層:經常性存取層、非經常性存取層或封存
    • 作業和資料傳輸
    • 以 GB 為單位使用容量
  • Azure NetApp Files可在數個 SKU 層中使用,而且需要最低布建容量 4 TiB,且遞增 1 TiB。 Azure NetApp Files費用是以下列因素為基礎:

    • SKU
    • 復原能力:LRS、ZRS 或 GRS
    • 布建的大小或容量,而非使用的容量
    • 作業和資料傳輸
    • 備份和還原

網路成本

數個 Azure 網路服務可以提供在 AKS 中執行之應用程式的存取權:

  • Azure Load Balancer。 根據預設,Load Balancer會使用標準 SKU。 Load Balancer費用是根據:

    • 規則:已設定的負載平衡和輸出規則數目。 輸入網路位址轉譯 (NAT) 規則不會計入規則總數中。
    • 已處理的資料:處理輸入和輸出的資料量,與規則無關。 未設定任何規則的Standard Load Balancer不需要每小時收費。
  • Azure 應用程式閘道。 AKS 通常會透過應用程式閘道輸入控制器使用應用程式閘道,或使用手動管理應用程式閘道來前端輸入控制器。 應用程式閘道支援閘道路由、傳輸層安全性 (TLS) 終止,以及Web 應用程式防火牆 (WAF) 功能。 應用程式閘道費用是根據:

    • 已修正依小時或部分小時設定的價格。
    • 容量單價,以耗用量為基礎的成本。 每個容量單位最多都有一個計算單位、2,500 個持續性連線,以及 2.22 Mbps 輸送量。
  • 公用 IP 位址 具有相依于下列專案的相關成本:

    • 保留與動態關聯。
    • 基本與安全與區域備援標準層。

向外延展成本

調整 AKS 叢集有多個選項,可將額外的容量新增至節點集區:

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

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

  • AKS 支援使用虛擬 kubelet實作,在 Azure 容器執行個體上執行容器。 AKS 虛擬節點會布建容器執行個體 Pod,以秒為單位啟動,讓 AKS 以足夠的容量來執行平均工作負載。 當 AKS 叢集用盡容量時,您可以相應放大更多容器執行個體 Pod,而不需要管理任何其他伺服器。 您可以將此方法與叢集自動調整程式和手動調整結合。

如果您使用隨選調整或叢集自動調整程式,請考慮新增的 VM。 容器執行個體費用是以下列因素為基礎:

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

升級成本

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

AKS 預設會將升級設定為激增一個額外節點。 設定的預設值 1max-surge 藉由建立額外的節點來取代舊版節點,以在連接或清空現有的應用程式之前,將工作負載中斷降至最低。 您可以自訂 max-surge 每個節點集區的值,以允許升級速度與升級中斷之間的取捨。 max-surge增加此值會更快完成升級程式,但 的大值 max-surge 可能會導致升級程式期間中斷,並產生額外的 VM 成本。

其他成本

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

成本最佳化

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

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

  • 對於多租使用者解決方案,實體隔離成本較高,而且會增加管理額外負荷。 邏輯隔離需要更多 Kubernetes 體驗,並增加變更和安全性威脅的介面區,但會共用成本。

  • Azure 保留 可協助您藉由認可數個產品的一年或三年方案來節省成本,例如 AKS 叢集中的 VM。 您可以藉由保留容量來獲得折扣。 使用 適用于儲存體計算 的 Azure 保留,以減少代理程式節點的成本。

    保留最多可以從隨用隨付價格減少 72% 的資源成本,且不會影響資源的執行時間狀態。 購買保留之後,折扣就會自動套用至相符的資源。 您可以從Azure 入口網站購買保留,或使用 Azure REST API、PowerShell 或 Azure CLI。 如果您使用依賴 Log Analytics 工作區的操作工具,請考慮同時使用此儲存體的保留。

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

    當您建立現成節點集區時,您可以定義每小時支付的最大價格,並啟用叢集自動調整程式,建議用於現成節點集區。 叢集自動調整程式會根據執行中的工作負載相應放大並相應放大節點集區中的節點數目。 針對現成節點集區,如果仍然需要節點,叢集自動調整程式會在收回之後相應放大節點數目。 如需詳細資訊,請參閱將現成節點集區新增至 Azure Kubernetes Service (AKS) 叢集

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

    您現在可以使用在 Ampere Altra ARM 處理器上執行的 AKS 來部署和管理容器化應用程式。 如需詳細資訊,請參閱使用 Ampere Altra ARM 處理器的 Azure 虛擬機器

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

  • 系統模式節點集區必須至少包含一個節點,而使用者模式節點集區可以包含零個或多個節點。 盡可能設定使用者模式節點集區,以自動從 0 調整為 N 節點。 您可以使用水準 Pod 自動調整程式,將工作負載設定為相應放大和相應縮小。 以 CPU 和記憶體為基礎自動調整,或使用Kubernetes 事件驅動自動調整 (KEDA) ,根據 Apache Kafka、RabbitMQ 或 Azure 服務匯流排 等外部系統的計量進行自動調整。

  • 請務必正確設定 Pod 的要求和限制 ,以改善應用程式密度,並避免將太多 CPU 和記憶體資源指派給工作負載。 使用 Prometheus 或 Container Insights 觀察 CPU 和記憶體的平均和最大耗用量。 在 YAML 資訊清單、Helm 圖表和 Kustomize 部署中正確設定 Pod 的限制和配額。

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

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

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

  • Azure 原則透過內建原則與 AKS 整合,以套用集中式、一致、大規模強制執行和保護。 在您的叢集上啟用Azure 原則附加元件,並套用預設 CPU 要求和限制和記憶體資源限制,以確保叢集容器上定義了 CPU 和記憶體資源限制。

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

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

成本治理

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

成本控管是持續實作原則或控制項以限制消費和成本的程式。 原生 Kubernetes 工具和 Azure 工具都支援使用主動式監視和基礎結構成本優化進行成本控管。

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

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

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

參與者

本文由 Microsoft 維護。 最初是由下列參與者所撰寫。

主要作者:

其他參與者:

若要查看非公用LinkedIn設定檔,請登入 LinkedIn。

下一步