

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

# 成本最佳化
<a name="cost-optimization"></a>

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

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

本節討論下列成本最佳化方法：
+ [Kubecost](#kubecost)
+ [金絲雀](#goldilocks)
+ [AWS Fargate](#fargate)
+ [Spot 執行個體](#spot)
+ [預留執行個體](#reserved)
+ [AWS Graviton 執行個體](#graviton)

## Kubecost
<a name="kubecost"></a>

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

Kubecost 提供下列主要功能：
+ **成本分配** – Kubecost 為 Kubernetes 資源提供全面的成本分配，包括工作負載、服務、命名空間和標籤。此功能可協助團隊依環境、專案或團隊監控成本。
+ **即時成本監控** – 它提供雲端成本的即時監控，讓組織立即洞察支出模式，並協助防止意外的成本超支。
+ **最佳化建議** – Kubecost 提供將資源使用率降至最低的實際建議，包括減少閒置資源、適當調整工作負載大小，以及最大化儲存體費用。
+ **預算和提醒** – Kubecost 使用者可以建立預算，並在支出接近或超過預定條件時收到提醒。此功能可協助團隊遵守財務限制。

## 金絲雀
<a name="goldilocks"></a>

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

Goldilocks 提供下列主要功能：
+ **資源建議** – Goldilocks 透過分析 Kubernetes 工作負載的過去 CPU 和記憶體耗用統計資料，決定資源請求和限制的理想設定。透過這樣做，可以更輕鬆地避免佈建不足或過度，這可能會導致效能問題和資源浪費。
+ **VPA 整合** – Goldilocks 利用 Kubernetes Vertical Pod Autoscaler (VPA) 收集資料並提供建議。它在「建議模式」中執行，表示它實際上不會變更資源設定，但提供這些設定應該是什麼的指導。
+ **命名空間型分析** – 透過允許您將特定命名空間設為目標進行分析，Goldilocks 可讓您微調要最佳化和監控的工作負載。
+ **視覺化儀表板** – Web 型儀表板會以視覺化方式顯示建議的資源請求和限制，可讓您直接了解資料並對其採取動作。
+ **非侵入性操作** – Goldilocks 不會變更叢集的設定，因為它在建議模式下操作。如果需要，您可以在檢閱建議後手動套用建議的資源設定。

## AWS Fargate
<a name="fargate"></a>

在 Amazon EKS 的環境中， [https://docs.aws.amazon.com/eks/latest/userguide/fargate.html](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html)AWS 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 執行個體
<a name="spot"></a>

[Spot 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html)相較於隨需執行個體定價可大幅節省成本，也是在 Amazon EKS 叢集中執行 Amazon EC2 工作者節點的實惠選項。不過，在需要隨需執行個體容量的情況下， [AWS 可以中斷 Spot](https://docs.aws.amazon.com/whitepapers/latest/cost-optimization-leveraging-ec2-spot-instances/how-spot-instances-work.html) 執行個體。當需要容量時， AWS 可以在 2 分鐘內通知 回收 Spot 執行個體，使其對關鍵且具狀態的工作負載較不可靠。

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

Spot 執行個體提供下列主要功能：
+ **節省成本** – Spot 執行個體的成本可能低於隨需執行個體[定價](https://aws.amazon.com/ec2/pricing/on-demand/)，因此非常適合成本敏感的工作負載。
+ **適用於容錯工作負載** – 非常適合無狀態、容錯工作負載，例如批次處理、CI/CD 任務、機器學習或大規模資料處理，其中執行個體可以替換而不會發生重大中斷。
+ **自動擴展群組整合** – Amazon EKS 會將 Spot 執行個體與 Kubernetes Cluster Autoscaler 整合，以其他可用的 Spot 執行個體或隨需執行個體自動取代中斷的 Spot 執行個體節點。

## 預留執行個體
<a name="reserved"></a>

在 Amazon EKS 中，[預留執行個體](https://aws.amazon.com/ec2/pricing/reserved-instances/)是執行 Kubernetes 工作負載的 Amazon EC2 工作者節點定價模式。透過使用預留執行個體，您承諾在 1 年或 3 年期間內使用特定執行個體類型，以換取相較於隨需執行個體定價的成本節省。在 Amazon EKS 中保留執行個體是一種經濟實惠的方式，可在 Amazon EC2 工作者節點上執行一致的長期工作負載。

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

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

預留執行個體提供下列主要功能：
+ **節省成本** – 預留執行個體相較於隨需執行個體可節省成本，取決於期限長度 (1 或 3 年） 和[付款計劃](https://aws.amazon.com/ec2/pricing/reserved-instances/pricing) （全部預付、部分預付或無預付）。
+ **長期承諾** – 您承諾特定執行個體類型、大小和 的 1 年或 3 年期間 AWS 區域。這非常適合穩定且隨時間持續執行的工作負載。
+ **可預測定價** – 由於您致力於特定期限，預留執行個體提供可預測的每月或預付成本，讓您更輕鬆地為長期工作負載編列預算。
+ **執行個體彈性** – 使用可轉換預留執行個體，您可以在保留期間變更執行個體類型、系列或大小。可轉換預留執行個體比標準預留執行個體提供更多彈性，這不允許變更。
+ **保證容量** – 預留執行個體可確保在進行保留的可用區域中提供容量，這對於需要一致運算能力的關鍵工作負載至關重要。
+ **無中斷風險** – 與 Spot 執行個體不同，預留執行個體不會受到 中斷 AWS。這使得它們非常適合執行需要保證執行時間的任務關鍵工作負載。

## AWS Graviton 執行個體
<a name="graviton"></a>

[AWS Graviton](https://aws.amazon.com/ec2/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 架構最佳化的工作負載。