This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.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 不会自动执行指定少于两个副本的工作负载对象。如果 pod 由 VPA 外部的一些进程重启,VPA 会从这些工作负载对象更新的新 pod。您可以通过修改 VerticalPodAutoscalerController
自定义资源(CR)中的 minReplicas
参数来更改此集群范围的最小值。
例如,如果您将 minReplicas
设置为 3
,则 VPA 不会为指定少于三个副本的工作负载对象删除和更新 pod。
如果将 minReplicas
设置为 1
,则 VPA 可以为只指定一个副本的工作负载对象删除唯一的 pod。只有在 VPA 删除 pod 以调整其资源时,您的工作负载可以允许停机时,才应使用此设置来使用一个副本对象。为了避免使用一个副本的对象出现不必要的停机时间,将带有 podUpdatePolicy
设置的 VPA CR 配置为 Initial
,这只有在 VPA 外部的一些进程重启时,或状态为 Off
时才重启。这可让您在适合的时间手动更新 pod。
VerticalPodAutoscalerController
对象示例