2.5.3. 关于使用 Vertical Pod Autoscaler Operator
要使用 Vertical Pod Autoscaler Operator(vpa),您需要为集群中的工作负载对象创建 VPA 自定义资源(CR)。VPA 学习并应用与该工作负载对象关联的 pod 的最佳 CPU 和内存资源。您可以使用 VPA 与部署、有状态集、作业、守护进程集、副本集或复制控制器工作负载对象一起使用。VPA CR 必须与您要监控的 pod 位于同一个项目中。
您可以使用 VPA CR 关联一个工作负载对象,并指定 VPA 使用什么模式运行:
-
Auto和Recreate模式会在 pod 生命周期内自动应用 VPA 对 CPU 和内存建议。VPA 会删除项目中任何与建议不兼容的 pod。当由工作负载对象重新部署时,VPA 会在其建议中更新新 pod。 -
Initial模式仅在创建 pod 时自动应用 VPA 建议。 -
Off模式只提供推荐的资源限制和请求信息,用户可以手动应用其中的建议。off模式不会更新 pod。
您还可以使用 CR 使特定容器不受 VPA 评估和更新的影响。
例如,pod 具有以下限制和请求:
在创建了一个设置为 auto 的 VPA 后,VPA 会了解资源使用情况并删除 pod。重新部署时,pod 会使用新的资源限值和请求:
您可以使用以下命令查看 VPA 建议:
oc get vpa <vpa-name> --output yaml
$ oc get vpa <vpa-name> --output yaml
几分钟后,输出显示 CPU 和内存请求的建议,如下所示:
输出示例
输出显示推荐的资源、目标、最低推荐资源、lowerBound、最高推荐资源、upperBound、以及最新资源建议和 uncappedTarget。
VPA 使用 lessBound 和 upperBound 值来确定一个 pod 是否需要更新。如果 pod 的资源请求低于 lowerBound 值,或高于 upperBound 值,则 VPA 会终止 pod,并使用 target 值重新创建 pod。
2.5.3.1. 自动应用 VPA 建议 复制链接链接已复制到粘贴板!
要使用 VPA 来自动更新 pod,为特定工作负载对象创建一个 VPA CR,并将 updateMode 设置为 Auto 或 Recreate。
当为工作复杂对象创建 pod 时,VPA 会持续监控容器以分析其 CPU 和内存需求。VPA 会删除任何不满足 VPA 对 CPU 和内存的建议的 pod。重新部署后,pod 根据 VPA 建议使用新的资源限值和请求,并遵循您的应用程序的 pod 中断预算。建议被添加到 VPA CR 的 status 字段中以进行引用。
工作负载对象必须至少指定两个副本,以便 VPA 监控和更新 pod。如果工作负载对象指定一个副本,VPA 不会删除 pod 来防止应用程序停机。您可以手动删除 pod 以使用推荐的资源。
Auto 模式的 VPA CR 示例
在 VPA 可以决定推荐的资源并对新 pod 应用推荐前,pod 必须已在运行。