

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

为了支持有效的资源控制，Kubernetes 成本最小化对于使用这种容器编排技术的企业至关重要。由于Kubernetes设置的复杂性，包括多个组件，例如Pod和节点，因此很难正确跟踪其支出。通过应用成本优化技术，企业可以看到其资源的使用情况，并适当地将费用分配给部门或项目。

尽管动态扩展具有优势，但如果管理不当，可能会导致不可预见的开支。高效的成本管理有助于仅在真正需要时才分配资源，从而避免意想不到的支出激增。

本节讨论以下成本优化方法：
+ [Kubecost](#kubecost)
+ [Goldilocks](#goldilocks)
+ [AWS Fargate](#fargate)
+ [竞价型实例](#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 是一个 K](https://github.com/FairwindsOps/goldilocks) ubernetes 实用程序，旨在帮助用户优化 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 允许您在不管理底层亚马逊实例的情况下运行 Kubernetes pod。 EC2 它是一个无服务器计算引擎，可让您专注于部署和扩展容器化应用程序，而不必担心基础架构。

AWS Fargate 提供以下主要功能：
+ **无需基础设施管理** — Fargate 无需预置、管理或扩展 Amazon EC2 实例或 Kubernetes 节点。 AWS 负责所有基础架构管理，包括修补和扩展。
+ **Pod 级隔离** — 与基于 Amazon 的工作节点不同， EC2Fargate 提供任务或舱级隔离。每个 Pod 都在自己的隔离计算环境中运行，从而增强了安全性和性能。
+ **自动扩展** — Fargate 根据需求自动扩展 Kubernetes 容器。您无需管理扩展策略或节点池。
+ **按秒计费** — 您只需为每个 Pod 在运行的确切时间内消耗的 vCPU 和内存资源付费，对于某些工作负载来说，这是一种经济实惠的选择。
+ **减少开销** — Fargate 无需管理 EC2 实例，使您可以专注于构建和管理应用程序，而不是基础设施运营。

## 竞价型实例
<a name="spot"></a>

与按需@@ [实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html)定价相比，竞价型实例可节省大量费用，并且是在 Amazon EKS 集群中运行 Amazon EC2 工作节点的经济实惠的选择。但是，在需要按需[实例容量时，AWS 可能会中断竞价型](https://docs.aws.amazon.com/whitepapers/latest/cost-optimization-leveraging-ec2-spot-instances/how-spot-instances-work.html)实例。 AWS 当需要容量时，可以在 2 分钟通知的情况下回收竞价型实例，从而降低它们对关键的有状态工作负载的可靠性。

对于对成本敏感且能够承受中断的工作负载，Amazon EKS 中的竞价型实例是一个不错的选择。在 Kubernetes 集群中结合使用竞价型实例和按需实例可以帮助您在不牺牲重要工作负载可用性的情况下节省资金。

竞价型实例提供以下主要功能：
+ **节省成本** — 竞价型实例可能比按需实例[定价](https://aws.amazon.com/ec2/pricing/on-demand/)便宜，因此非常适合成本敏感型工作负载。
+ **容错工作负载的理想之选** — 非常适合无状态的容错工作负载，例如批处理、CI/CD 作业、机器学习或大规模数据处理，在这些工作负载中，可以在不发生重大中断的情况下更换实例。
+ **自动扩展组集成** — Amazon EKS 将竞价型实例与 Kubernetes 集群自动扩缩器集成，后者可以自动将中断的竞价型实例节点替换为其他可用的竞价型实例或按需实例。

## 预留实例
<a name="reserved"></a>

在 Amazon EKS 中，[预留实例](https://aws.amazon.com/ec2/pricing/reserved-instances/)是运行 Kubernetes 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 区域对于稳定且随时间推移持续运行的工作负载而言，这是理想的选择。
+ **可预测的定价** — 由于您承诺使用特定的期限，因此预留实例可提供可预测的月度或前期成本，从而更轻松地为长期工作负载制定预算。
+ **实例灵活性**-使用可转换预留实例，您可以在预留期内更改实例类型、系列或大小。与不允许更改的标准预留实例相比，可转换预留实例具有更大的灵活性。
+ **有保障的容量** — 预留实例可确保进行预留的可用区内有可用容量，这对于需要稳定计算能力的关键工作负载至关重要。
+ **无中断风险** — 与竞价型实例不同，预留实例不会受到以下因素的中断 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 的 EC2 实例相比，基于 Graviton 的 Amazon 实例通常具有更好的性价比。 EC2对于运行 Amazon EKS 的 Kubernetes 集群来说，这使得它们成为一个有吸引力的选择。
+ **性能** — 第二代 Gravit AWS on Graviton2 处理器在计算性能、内存吞吐量和能效方面提供了显著改进。它们非常适合 CPU 密集型和内存密集型工作负载。
+ **不同的实例类型** — Graviton 实例有不同的系列，例如 t4g、m7g、c7g 和 r7g，涵盖了从通用到计算优化、内存优化和可突发性工作负载的一系列用例。
+ **Amazon EKS 节点组** — 您可以将由 Amazon EKS 管理的节点组或自行管理的节点组配置为包括基于 Graviton 的实例。通过这种方法，你可以在同一 Kubernetes 集群上运行针对 ARM 架构进行优化的工作负载以及基于 x86 的实例。