

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

# 计算缩放
<a name="compute-scaling"></a>

计算扩展是动态 Kubernetes 环境中应用程序性能的关键组成部分。Kubernetes 通过根据实时需求动态调整计算资源（例如 CPU 和内存）来减少浪费。此功能有助于避免配置过度或配置不足，从而节省运营开支。Kubernetes 使基础设施能够在高峰时段自动向上扩展，在非高峰时段自动向下扩展，从而有效地消除了手动干预的需求。

Kubernetes 的整体计算扩展实现了扩展过程的自动化，从而提高了应用程序的灵活性和可扩展性，并增强了其容错行为。最终，Kubernetes 的功能可以提高卓越运营和生产力。

本节讨论以下类型的计算扩展：
+ [Cluster Autoscaler](#autoscaler)
+ [带有预留空间的集群自动扩缩器](#over-provisioning)
+ [Karpenter](#karpenter)

## 集群 AutoScaler
<a name="autoscaler"></a>

根据容器的需求，Clu [ster Autoscaler](https://docs.aws.amazon.com/eks/latest/best-practices/cas.html) 工具会自动修改大小，方法是在必要时添加节点，或者在不需要节点且未充分利用时移除节点。

可以考虑将 Cluster Autoscaler 工具作为一种扩展解决方案，适用于需求逐渐增加且扩展延迟不是主要问题的工作负载。

集群自动扩缩器工具提供以下主要功能：
+ **扩展**-根据实际资源需求动态向上和向下扩展节点。
+ **Pod 调度** — 有助于确保每个 Pod 都在运行并拥有运行所需的资源，从而防止资源稀缺。
+ **成本效益** — 通过消除未充分利用的节点来消除运营未充分利用的节点所产生的不必要开支。

## 带有预留空间的集群自动扩缩器
<a name="over-provisioning"></a>

集群自动扩缩器具有超额配置功能，与集群自动扩缩器类似，因为它可以有效地部署节点，并通过在节点上运行低优先级的 pod 来节省时间。通过这种技术，流量会被重定向到这些容器中，以应对需求的突然激增，从而使应用程序能够不间断地继续运行。

具有预留空间的 Cluster Autoscaler 提供了虚拟 pod 的功能，当工作负载非常大、不需要延迟且需要快速扩展时，可以使用这些功能轻松部署和运行节点。

带预留空间的集群自动扩缩器提供以下主要功能：
+ **更快的响应**能力 — 通过持续访问多余的容量，可以缩短扩展集群以应对需求高峰所需的时间。
+ **资源预留** — 有效管理意外流量高峰有助于在很少停机时间内进行正确的管理。
+ **平滑扩展** — 最大限度地减少资源分配延迟有助于实现更加无缝的扩展过程。

## Karpenter
<a name="karpenter"></a>

[Kubernetes 版 Karpenter](https://docs.aws.amazon.com/eks/latest/best-practices/karpenter.html) 在开源、性能和可定制性方面的表现优于传统的集群自动扩缩工具。借助 Karpenter，您可以仅自动启动所需的计算资源来实时处理集群的需求。Karpenter 旨在提供更高效、响应更快的扩展。

使用Karpenter可以极大地受益于工作负载变化极大或复杂的应用程序，在这些应用程序中，快速做出扩展决策是必不可少的。它与集成 AWS，提供了改进的部署和节点选择优化。

Karpenter 包括以下主要功能：
+ **动态配置** — Karpenter 为此目的提供正确的实例和大小，并根据 Pod 的特定要求动态配置新节点。
+ **高级调度** — 通过巧妙的容器放置，Karpenter 可以安排节点，以便尽可能有效地使用 GPU、CPU、内存和存储等资源。
+ **快速缩放** — Karpenter 可以快速缩放，经常在几秒钟内做出反应。这种响应能力对于突发流量模式或工作负载需要立即扩展时非常有用
+ **成本效益** — 通过仔细选择最有效的实例，您可以降低运营成本并利用由提供的其他节省成本的替代方案 AWS，例如按需实例、竞价型实例和预留实例。