集群自动扩缩容

自动管理集群中的节点以适配需求。

Kubernetes 需要集群中的节点来运行 Pod。 这意味着需要为工作负载 Pod 以及 Kubernetes 本身提供容量。

你可以自动调整集群中可用的资源量:节点自动扩缩容。 你可以更改节点的数量,或者更改节点提供的容量。 第一种方法称为水平扩缩容,而第二种方法称为垂直扩缩容

Kubernetes 甚至可以为节点提供多维度的自动扩缩容。

手动节点管理

你可以手动管理节点级别的容量,例如你可以配置固定数量的节点; 即使这些节点的制备(搭建、管理和停用过程)是自动化的,你也可以使用这种方法。

本文介绍的是下一步操作,即自动化管理集群中可用的节点容量(CPU、内存和其他节点资源)。

自动水平扩缩容

Cluster Autoscaler

你可以使用 Cluster Autoscaler 自动管理节点的数目规模。Cluster Autoscaler 可以与云驱动或 Kubernetes 的 Cluster API 集成,以完成实际所需的节点管理。

当存在不可调度的 Pod 时,Cluster Autoscaler 会添加节点; 当这些节点为空时,Cluster Autoscaler 会移除节点。

云驱动集成组件

Cluster Autoscaler 的 README 列举了一些可用的云驱动集成组件。

成本感知多维度扩缩容

Karpenter

Karpenter 支持通过继承了特定云驱动的插件来直接管理节点, 还可以在优化总体成本的同时为你管理节点。

Karpenter 自动启动适合你的集群应用的计算资源。 Karpenter 设计为让你充分利用云资源,快速简单地为 Kubernetes 集群制备计算资源。

Karpenter 工具设计为与云驱动集成,提供 API 驱动的服务器管理, 此工具可以通过 Web API 获取可用服务器的价格信息。

例如,如果你在集群中启动更多 Pod,Karpenter 工具可能会购买一个比你当前使用的节点更大的新节点, 然后在这个新节点投入使用后关闭现有的节点。

云驱动集成组件

在 Karpenter 的核心与以下云驱动之间,存在可用的集成组件:

Descheduler

Descheduler 可以帮助你将 Pod 集中到少量节点上,以便在集群有空闲容量时帮助自动缩容。

基于集群大小调整工作负载

Cluster Proportional Autoscaler

对于需要基于集群大小进行扩缩容的工作负载(例如 cluster-dns 或其他系统组件), 你可以使用 Cluster Proportional Autoscaler

Cluster Proportional Autoscaler 监视可调度节点和核心的数量,并相应地调整目标工作负载的副本数量。

Cluster Proportional Vertical Autoscaler

如果副本数量应该保持不变,你可以使用 Cluster Proportional Vertical Autoscaler 基于集群大小垂直扩缩你的工作负载。此项目处于 Beta 阶段,托管在 GitHub 上。

Cluster Proportional Autoscaler 扩缩工作负载的副本数量,而 Cluster Proportional Vertical Autoscaler 基于集群中的节点和/或核心数量调整工作负载(例如 Deployment 或 DaemonSet)的资源请求。

接下来

本页面中的条目引用了第三方产品或项目,这些产品(项目)提供了 Kubernetes 所需的功能。Kubernetes 项目的开发人员不对这些第三方产品(项目)负责。请参阅CNCF 网站指南了解更多细节。

在提交更改建议,向本页添加新的第三方链接之前,你应该先阅读内容指南。

最后修改 October 15, 2024 at 3:18 AM PST: Merge pull request #48346 from windsonsea/metricy (50a9341)