跳转至

自动伸缩机制

Kubernetes提供了多种自动伸缩机制

  • HPA(Horizontal Pod Autoscaling)

  • VPA(Vertical Pod Autoscaler)

  • CA(Cluster Autoscaler)
  • CPA(Custom Pod Autoscaler)

HPA(水平 Pod 自动缩放器)

HPA 是 Kubernetes 中的内置控制器。它与API Server通信以确定是否调整Pod的数量(增加或减少)。当 Metrics Server 安装在环境中时,它可以利用 CPU/内存等资源使用指标来做出决策。这些指标与 Pod 中配置的 CPU/内存请求进行比较,以确定是否超出阈值。此外,可以根据总体 Pod 使用情况或特定容器使用情况来计算使用情况

HPA 调整 Pod 的数量。 有多个参数(包括Behaviour)可以调整,允许你指定每次调整时 Pod 数量应变化的百分比或绝对值

除了默认的资源使用情况外,HPA 还可以结合 KEDA(https://keda.sh/)等指标或项目来提供不同角度的决策

VPA(垂直 Pod 自动缩放器)

VPA 以每个 Pod 为基础运行。它不会修改 Pod 副本的数量,但会估计 CPU/内存请求/限制使用情况。 Auto/Recreate 模式下,设置相应的值,并重启 Pod。在Off 模式下,仅执行计算而不重新启动 Pod

CPA(集群比例自动缩放器)

CPA 旨在根据集群规模水平扩展 Pod 副本数量。一个常见的例子是 DNS 服务。CPA 可以根据当前集群规模动态调整 DNS 实例数量,集群规模可以是节点数,也可以是整体CPU容量

CPA 根据配置的 coresPerReplica 和 nodesPerReplica 以及当前节点规模计算出合适的数量。它动态调整目标 Pod 副本

CA(集群自动缩放器)

之前的 HPA、VPA、CPA等方法都是根据各种情况动态调整 Pod 的数量。CA 则根据具体情况动态调整节点数量。例如,当 Pod 充分利用所有节点上的资源,没有为新部署留下 CPU/内存资源时,CA 会动态添加新节点以提供额外的计算资源。反之,当节点资源使用率较低时,可以动态移除节点,尤其是在云环境中,以节省成本

KEDA(事件驱动自动缩放器)

KEDA 是一个轻量级的开源 Kubernetes 事件驱动的自动缩放器