配置 VerticalPodAutoscaler (VPA)
对于无状态和有状态应用,VerticalPodAutoscaler (VPA) 会根据您的业务需求自动推荐并可选地应用更合适的 CPU 和内存资源限制,确保 Pod 拥有足够的资源,同时提升集群资源利用率。
目录
了解 VerticalPodAutoscalers
您可以创建一个 VerticalPodAutoscaler,根据 Pod 的历史使用模式推荐或自动更新其 CPU 和内存资源请求与限制。
创建 VerticalPodAutoscaler 后,平台开始监控 Pod 的 CPU 和内存资源使用情况。当数据足够时,VerticalPodAutoscaler 会基于观察到的使用模式计算推荐的资源值。根据配置的更新模式,VPA 可以自动应用这些推荐,或仅提供推荐供手动应用。
VPA 通过分析 Pod 的资源使用情况并基于此分析提出建议,帮助确保 Pod 拥有所需资源,避免资源过度配置,从而实现集群资源的更高效利用。
VPA 是如何工作的?
VerticalPodAutoscaler (VPA) 扩展了 Pod 资源优化的概念。VPA 监控 Pod 的资源使用情况,并基于观察到的使用模式提供 CPU 和内存请求的推荐。
VPA 通过持续监控 Pod 的资源使用情况,并随着新数据的获取不断更新其推荐。VPA 可运行于以下模式:
- Off:VPA 仅提供推荐,不自动应用。
- Manual Adjustment:您可以根据 VPA 推荐手动调整资源配置。
重要提示:弹性伸缩可以实现 Pod 的水平或垂直伸缩。当资源充足时,弹性伸缩效果良好;但当集群资源不足时,可能导致 Pod 处于 Pending 状态。因此,请确保集群资源充足或配额合理,或者配置告警以监控伸缩情况。
支持的功能
VerticalPodAutoscaler 根据历史使用模式提供资源推荐,帮助您优化 Pod 的 CPU 和内存配置。
重要提示:手动应用 VPA 推荐时会触发 Pod 重建,可能导致应用短暂中断。建议在生产环境的维护窗口期间应用推荐。
前提条件
- 请确保当前集群已部署监控组件且运行正常。您可以点击平台右上角
> 平台健康状态,查看监控组件的部署和健康状态。
- 集群中必须安装 Alauda Container Platform Vertical Pod Autoscaler 集群插件。
安装 Vertical Pod Autoscaler 插件
使用 VPA 之前,需先安装 Vertical Pod Autoscaler 集群插件:
-
登录并进入 管理员 页面。
-
点击 Marketplace > 集群插件,进入 集群插件 列表页面。
-
找到 Alauda Container Platform Vertical Pod Autoscaler 集群插件,点击安装,进入安装页面。
创建 VerticalPodAutoscaler
使用 CLI
您可以通过命令行界面定义 YAML 文件并使用 kubectl create 命令创建 VerticalPodAutoscaler。以下示例展示了针对 Deployment 对象的垂直 Pod 自动伸缩配置:
-
创建名为
vpa.yaml的 YAML 文件,内容如下:- 使用 autoscaling.k8s.io/v1 API。
- VPA 的名称。
- 指定目标工作负载对象。VPA 通过工作负载的选择器查找需要调整资源的 Pod。支持的工作负载类型包括 DaemonSet、Deployment、ReplicaSet、StatefulSet、ReplicationController、Job 和 CronJob。
- 指定要伸缩对象的 API 版本。
- 指定对象类型。
- VPA 应用的目标资源。
- 定义 VPA 如何应用推荐的更新策略。updateMode 可选:
- Auto:创建 Pod 时自动设置资源请求,并更新当前 Pod 至推荐资源请求。目前等同于“Recreate”。此模式可能导致应用停机。未来支持就地更新时,Auto 模式将采用该机制。
- Recreate:创建 Pod 时自动设置资源请求,并驱逐当前 Pod 以更新至推荐资源请求。不使用就地更新。
- Initial:仅在创建 Pod 时设置资源请求,之后不修改。
- Off:不自动修改 Pod 资源请求,仅在 VPA 对象中提供推荐。
- 资源策略,可为不同容器设置特定策略。例如,将容器模式设为“Auto”表示为该容器计算推荐,“Off”表示不计算推荐。
- 应用于 Pod 中所有容器的策略。
- 设置模式为 Auto 或 Off。Auto 表示为该容器生成推荐,Off 表示不生成推荐。
-
应用 YAML 文件创建 VPA:
示例输出:
-
创建 VPA 后,可通过以下命令查看推荐:
示例输出(部分):
使用 Web 控制台
-
进入 Container Platform。
-
在左侧导航栏点击 工作负载 > Deployments。
-
点击 Deployment 名称。
-
向下滚动至 弹性伸缩 区域,点击右侧的 更新。
-
选择 垂直伸缩 并配置伸缩规则。
-
点击 更新。
高级 VPA 配置
更新策略选项
updateMode: "Off"- VPA 仅提供推荐,不自动应用。您可根据需要手动应用推荐。updateMode: "Auto"- 创建 Pod 时自动设置资源请求,并更新当前 Pod 至推荐值。目前等同于“Recreate”。updateMode: "Recreate"- 创建 Pod 时自动设置资源请求,并驱逐当前 Pod 以更新至推荐值。updateMode: "Initial"- 仅在创建 Pod 时设置资源请求,之后不修改。minReplicas: <number>- 最小副本数。确保在 Updater 驱逐 Pod 时,至少保持此数量的 Pod 可用。必须大于 0。
容器策略选项
containerName: "*"- 应用于 Pod 中所有容器。mode: "Auto"- 自动为容器生成推荐。mode: "Off"- 不为容器生成推荐。
注意:
- VPA 推荐基于历史使用数据,Pod 运行数天后推荐才会准确。
- 在 Auto 模式下应用 VPA 推荐会触发 Pod 重建,可能导致应用短暂中断。
后续操作
配置 VPA 后,可在 弹性伸缩 区域查看目标容器的 CPU 和内存资源限制推荐值。在 容器 区域,选择目标容器标签页,点击 资源限制 右侧图标,根据推荐值更新资源限制。