成本最佳化 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

成本最佳化

為了支援有效的資源控制,Kubernetes 成本最小化對於使用此容器協同運作技術的企業至關重要。由於 Kubernetes 設定的複雜性,因此很難正確追蹤其支出,其中包括 Pod 和節點等多個元件。透過運用成本最佳化技術,企業可以查看資源的花費,並適當地將費用指派給部門或專案。

雖然動態擴展具有優勢,但如果未正確管理,可能會導致不可預見的費用。有效率的成本管理有助於僅在真正需要時才配置資源,避免意外的支出激增。

本節討論下列成本最佳化方法:

Kubecost

Kubecost 是一種成本管理解決方案,可協助企業追蹤、控制和最大化雲端基礎設施的支出。它專為 Kubernetes 叢集而打造。Kubecost 可讓您深入了解資源使用率和即時成本意識,讓您更了解使用雲端資源的位置和數量。透過這些洞見,您可以最佳化基礎設施支出、提高資源效率,並對雲端投資做出更明智的決策。

Kubecost 提供下列主要功能:

  • 成本分配 – Kubecost 為 Kubernetes 資源提供全面的成本分配,包括工作負載、服務、命名空間和標籤。此功能可協助團隊依環境、專案或團隊監控成本。

  • 即時成本監控 – 它提供雲端成本的即時監控,讓組織立即洞察支出模式,並協助防止意外的成本超支。

  • 最佳化建議 – Kubecost 提供將資源使用率降至最低的實際建議,包括減少閒置資源、適當調整工作負載大小,以及最大化儲存體費用。

  • 預算和提醒 – Kubecost 使用者可以建立預算,並在支出接近或超過預定條件時收到提醒。此功能可協助團隊遵守財務限制。

金絲雀

Goldilocks 是一種 Kubernetes 公用程式,旨在協助使用者最佳化 Kubernetes 工作負載的資源請求和限制。它提供有關如何為在 Kubernetes 叢集中執行的容器設定 CPU 和記憶體資源的建議。這些建議可協助您確保應用程式擁有正確數量的資源,可有效率地執行,而不會浪費資源。此最佳化可以節省成本、改善效能,以及更有效率地使用 Kubernetes 叢集。

Goldilocks 提供下列主要功能:

  • 資源建議 – Goldilocks 透過分析 Kubernetes 工作負載的過去 CPU 和記憶體耗用統計資料,決定資源請求和限制的理想設定。透過這樣做,可以更輕鬆地避免佈建不足或過度,這可能會導致效能問題和資源浪費。

  • VPA 整合 – Goldilocks 利用 Kubernetes Vertical Pod Autoscaler (VPA) 收集資料並提供建議。它在「建議模式」中執行,表示它實際上不會變更資源設定,但提供這些設定應該是什麼的指導。

  • 命名空間型分析 – 透過允許您將特定命名空間設為目標進行分析,Goldilocks 可讓您微調要最佳化和監控的工作負載。

  • 視覺化儀表板 – Web 型儀表板會以視覺化方式顯示建議的資源請求和限制,可讓您直接了解資料並對其採取動作。

  • 非侵入性操作 – Goldilocks 不會變更叢集的設定,因為它在建議模式下操作。如果需要,您可以在檢閱建議後手動套用建議的資源設定。

AWS Fargate

在 Amazon EKS 的環境中, https://docs.aws.amazon.com/eks/latest/userguide/fargate.htmlAWS Fargate 可讓您在不管理基礎 Amazon EC2 執行個體的情況下執行 Kubernetes Pod。這是一個無伺服器運算引擎,可讓您專注於部署和擴展容器化應用程式,而無需擔心基礎設施。

AWS Fargate 提供下列主要功能:

  • 無基礎設施管理 – Fargate 無需佈建、管理或擴展 Amazon EC2 執行個體或 Kubernetes 節點。 會 AWS 處理所有基礎設施管理,包括修補和擴展。

  • Pod 層級隔離 – 與以 Amazon EC2 為基礎的工作者節點不同,Fargate 提供任務或 Pod 層級隔離。每個 Pod 都在自己的隔離運算環境中執行,可增強安全性和效能。

  • 自動擴展 – Fargate 會根據需求自動擴展 Kubernetes Pod。您不需要管理擴展政策或節點集區。

  • 每秒計費 – 您只需為每個 Pod 執行的確切持續時間內消耗的 vCPU 和記憶體資源付費,這是特定工作負載經濟實惠的選項。

  • 減少額外負荷 – 透過消除管理 EC2 執行個體的需求,Fargate 可讓您專注於建置和管理應用程式,而不是基礎設施操作。

Spot 執行個體

Spot 執行個體相較於隨需執行個體定價可大幅節省成本,也是在 Amazon EKS 叢集中執行 Amazon EC2 工作者節點的實惠選項。不過,在需要隨需執行個體容量的情況下, AWS 可以中斷 Spot 執行個體。當需要容量時, AWS 可以在 2 分鐘內通知 回收 Spot 執行個體,使其對關鍵且具狀態的工作負載較不可靠。

對於對成本敏感且可承受中斷的工作負載,Amazon EKS 中的 Spot 執行個體是不錯的選擇。在 Kubernetes 叢集中使用 Spot 執行個體和隨需執行個體的組合,可協助您節省成本,而不會犧牲重要工作負載的可用性。

Spot 執行個體提供下列主要功能:

  • 節省成本 – Spot 執行個體的成本可能低於隨需執行個體定價,因此非常適合成本敏感的工作負載。

  • 適用於容錯工作負載 – 非常適合無狀態、容錯工作負載,例如批次處理、CI/CD 任務、機器學習或大規模資料處理,其中執行個體可以替換而不會發生重大中斷。

  • 自動擴展群組整合 – Amazon EKS 會將 Spot 執行個體與 Kubernetes Cluster Autoscaler 整合,以其他可用的 Spot 執行個體或隨需執行個體自動取代中斷的 Spot 執行個體節點。

預留執行個體

在 Amazon EKS 中,預留執行個體是執行 Kubernetes 工作負載的 Amazon EC2 工作者節點定價模式。透過使用預留執行個體,您承諾在 1 年或 3 年期間內使用特定執行個體類型,以換取相較於隨需執行個體定價的成本節省。在 Amazon EKS 中保留執行個體是一種經濟實惠的方式,可在 Amazon EC2 工作者節點上執行一致的長期工作負載。

預留執行個體通常用於 Amazon EC2。不過,如果工作負載需要長期且可預測的用量,則 Amazon EKS 叢集 (即 EC2 執行個體) 中的工作者節點也可以受益於此節省成本的模型。

需要高可用性和一致效能的生產服務、資料庫和其他具狀態應用程式,是非常適合預留執行個體的穩定工作負載範例。

預留執行個體提供下列主要功能:

  • 節省成本 – 預留執行個體相較於隨需執行個體可節省成本,取決於期限長度 (1 或 3 年) 和付款計劃 (全部預付、部分預付或無預付)。

  • 長期承諾 – 您承諾特定執行個體類型、大小和 的 1 年或 3 年期間 AWS 區域。這非常適合穩定且隨時間持續執行的工作負載。

  • 可預測定價 – 由於您致力於特定期限,預留執行個體提供可預測的每月或預付成本,讓您更輕鬆地為長期工作負載編列預算。

  • 執行個體彈性 – 使用可轉換預留執行個體,您可以在保留期間變更執行個體類型、系列或大小。可轉換預留執行個體比標準預留執行個體提供更多彈性,這不允許變更。

  • 保證容量 – 預留執行個體可確保在進行保留的可用區域中提供容量,這對於需要一致運算能力的關鍵工作負載至關重要。

  • 無中斷風險 – 與 Spot 執行個體不同,預留執行個體不會受到 中斷 AWS。這使得它們非常適合執行需要保證執行時間的任務關鍵工作負載。

AWS Graviton 執行個體

AWS Graviton 是一系列以 ARM 為基礎的處理器 AWS ,旨在為雲端工作負載提供更高的效能和成本效益。在 Amazon EKS 的環境中,您可以使用 Graviton 執行個體作為工作者節點來執行 Kubernetes 工作負載,從而大幅提高效能並節省成本。

Graviton 執行個體是雲端原生和運算密集型應用程式的絕佳選項,因為它們提供比 x86 執行個體更高的價格效能比。不過,當您考慮採用 Graviton 執行個體時,請將 ARM 相容性納入考量。

AWS Graviton 執行個體提供下列主要功能:

  • ARM 型架構 – AWS Graviton 處理器是以 ARM 架構為基礎,與傳統 x86 架構不同,但對於許多工作負載具有高效率。

  • 具成本效益 – 相較於以 x86 為基礎的 Amazon EC2 EC2 執行個體通常可提供更好的價格效能。這使它們成為執行 Amazon EKS 之 Kubernetes 叢集的吸引人選項。

  • 效能 – Graviton2 處理器是第二代 AWS Graviton,在運算效能、記憶體輸送量和能源效率方面提供顯著改善。它們非常適合 CPU 密集型和記憶體密集型工作負載。

  • 多樣化執行個體類型 – Graviton 執行個體有多種系列,例如 t4g、m7g、c7g 和 r7g,涵蓋從一般用途到運算最佳化、記憶體最佳化和爆量工作負載的各種使用案例。

  • Amazon EKS 節點群組 – 您可以設定由 Amazon EKS 或自我管理節點群組管理的節點群組,以包含 Graviton 型執行個體。透過此方法,您可以在相同的 Kubernetes 叢集以及 x86 型執行個體上執行針對 ARM 架構最佳化的工作負載。