对于无状态和有状态应用,VerticalPodAutoscaler (VPA) 会根据您的业务需求自动推荐并可选地应用更合适的 CPU 和内存资源限制,确保 Pod 拥有足够的资源,同时提升集群资源利用率。
您可以创建一个 VerticalPodAutoscaler,根据 Pod 的历史使用模式推荐或自动更新其 CPU 和内存资源请求与限制。
创建 VerticalPodAutoscaler 后,平台开始监控 Pod 的 CPU 和内存资源使用情况。当收集到足够数据时,VerticalPodAutoscaler 会基于观察到的使用模式计算推荐的资源值。根据配置的更新模式,VPA 可以自动应用这些推荐,或仅提供推荐供手动应用。
VPA 通过分析 Pod 的资源使用情况并基于此分析提出建议,帮助确保 Pod 拥有所需资源,避免资源过度配置,从而实现集群资源的更高效利用。
VerticalPodAutoscaler (VPA) 扩展了 Pod 资源优化的概念。VPA 监控 Pod 的资源使用情况,并基于观察到的使用模式提供 CPU 和内存请求的推荐。
VPA 通过持续监控 Pod 的资源使用情况,并随着新数据的产生不断更新推荐。VPA 可运行于以下模式:
重要提示:弹性伸缩可以实现 Pod 的水平或垂直伸缩。当资源充足时,弹性伸缩效果良好;但当集群资源不足时,可能导致 Pod 处于 Pending 状态。因此,请确保集群资源充足或配额合理,或配置告警以监控伸缩情况。
VerticalPodAutoscaler 基于历史使用模式提供资源推荐,帮助您优化 Pod 的 CPU 和内存配置。
重要提示:手动应用 VPA 推荐时会触发 Pod 重建,可能导致应用短暂中断。建议在生产环境的维护窗口期间应用推荐。
使用 VPA 之前,需先安装 Vertical Pod Autoscaler 集群插件:
登录并进入 Administrators 页面。
点击 Marketplace > Cluster Plugins,进入 Cluster Plugins 列表页面。
找到 Alauda Container Platform Vertical Pod Autoscaler 集群插件,点击安装,进入安装页面。
您可以通过命令行界面定义 YAML 文件并使用 kubectl create
命令创建 VerticalPodAutoscaler。以下示例展示了针对 Deployment 对象的垂直 Pod 自动伸缩:
创建名为 vpa.yaml
的 YAML 文件,内容如下:
应用 YAML 文件创建 VPA:
示例输出:
创建 VPA 后,可运行以下命令查看推荐:
示例输出(部分):
进入 Container Platform。
在左侧导航栏点击 Workloads > Deployments。
点击 Deployment 名称。
向下滚动至 弹性伸缩 区域,点击右侧的 更新。
选择 垂直伸缩 并配置伸缩规则。
参数 | 说明 |
---|---|
伸缩模式 | 目前支持 手动伸缩 模式,通过分析过去的资源使用情况提供推荐的资源配置,您可以根据推荐值手动调整。调整会导致 Pod 重建和重启,请选择合适时间以避免影响运行中的应用。 通常,Pod 运行超过 8 天后,推荐值会更准确。 注意,当集群资源不足时,伸缩可能导致 Pod 处于 Pending 状态。请确保集群资源充足或配额合理,或配置告警监控伸缩情况。 |
目标容器 | 默认为工作负载的第一个容器。您可以根据需要选择为一个或多个容器启用资源限制推荐。 |
点击 更新。
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 后,可在 弹性伸缩 区域查看目标容器的 CPU 和内存资源限制推荐值。在 容器 区域,选择目标容器标签页,点击 资源限制 右侧的图标,根据推荐值更新资源限制。