无论是无状态应用还是有状态应用,垂直 Pod 自动伸缩器 (VPA) 会根据您的业务需求,自动推荐并可选地应用更合适的 CPU 和内存资源限制,确保 Pods 拥有足够的资源,同时提高集群资源的利用率。
您可以创建一个垂直 Pod 自动伸缩器,以根据 Pods 的历史使用模式推荐或自动更新 CPU 和内存资源请求及限制。
在您创建垂直 Pod 自动伸缩器后,平台开始监控 Pods 的 CPU 和内存资源使用情况。当有足够的数据可用时,垂直 Pod 自动伸缩器会根据观察到的使用模式计算推荐的资源值。根据配置的更新模式,VPA 可以自动应用这些推荐值,或仅将其提供以供手动应用。
VPA 通过分析 Pods 随时间的资源使用情况并基于此分析提供建议。它可以帮助确保 Pods 拥有所需的资源,而不会过度配置,从而在整个集群中实现更高效的资源利用。
垂直 Pod 自动伸缩器 (VPA) 扩展了 Pod 资源优化的概念。VPA 监控 Pods 的资源使用情况,并根据观察到的使用模式提供 CPU 和内存请求的建议。
VPA 通过持续监控 Pods 的资源使用情况并在新数据可用时更新其建议来工作。VPA 可以在以下模式下运行:
重要:弹性伸缩可以实现 Pods 的水平或垂直伸缩。当有足够的资源可用时,弹性伸缩可以带来良好的效果,但当集群资源不足时,可能会导致 Pods 处于待处理状态。因此,请确保集群有足够的资源或合理的配额,或者您可以配置告警以监控伸缩条件。
垂直 Pod 自动伸缩器根据历史使用模式提供资源建议,使您能够优化 Pods 的 CPU 和内存配置。
重要:在手动应用 VPA 建议时,将会发生 Pod 重建,这可能会导致您的应用程序暂时中断。请考虑在生产工作负载的维护窗口期间应用建议。
在使用 VPA 之前,您需要安装垂直 Pod 自动伸缩集群插件:
登录并导航到 管理员 页面。
单击 市场 > 集群插件 以访问 集群插件 列表页面。
找到 Alauda 容器平台的垂直 Pod 自动伸缩集群插件,单击安装,然后继续到安装页面。
您可以通过定义 YAML 文件并使用 kubectl create
命令来创建垂直 Pod 自动伸缩器。以下示例展示了一个 Deployment 对象的垂直 Pod 自动伸缩:
vpa.yaml
的 YAML 文件,内容如下:示例输出:
示例输出(部分):
进入 容器平台。
在左侧导航栏中,单击 工作负载 > 部署。
单击 部署名称。
向下滚动至 弹性伸缩 区域,单击右侧的 更新。
选择 垂直伸缩,并配置伸缩规则。
参数 | 说明 |
---|---|
伸缩模式 | 当前支持 手动伸缩 模式,通过分析过往资源用量给出推荐的资源配置。您可以根据推荐值手动进行调整。调整将导致 Pods 被重建和重启,因此请选择合适的时间以避免对正在运行的应用程序产生影响。 通常在 Pods 运行超过 8 天后,推荐值会趋于精准。 请注意,当集群资源不足时,伸缩可能导致 Pods 处于待处理状态。请确保集群有足够的资源或合理的配额,或配置告警以监控伸缩条件。 |
目标容器 | 默认为工作负载的第一个容器。您可以根据需要选择为一个或多个容器开启资源限额推荐。 |
单击 更新。
updateMode: "Off"
- VPA 仅提供建议,而不自动应用。您可以根据需要手动应用这些建议。updateMode: "Auto"
- 在创建 Pods 时自动设置资源请求,并将当前 Pods 更新为推荐值。目前等同于 "Recreate"。updateMode: "Recreate"
- 在创建 Pods 时自动设置资源请求,并驱逐当前 Pods 以更新为推荐值。updateMode: "Initial"
- 仅在创建 Pods 时设置资源请求,之后不进行修改。minReplicas: <number>
- 最小副本数。确保在更新器驱逐 Pods 时保持此最小数量的 Pods 可用。必须大于 0。containerName: "*"
- 将策略应用于 Pod 中的所有容器。mode: "Auto"
- 自动为容器生成建议。mode: "Off"
- 不为容器生成建议。注意:
配置完成后,可以在 弹性伸缩 区域查看目标容器的 CPU 和内存资源限额的推荐值。在 容器 区域,选择目标容器标签页,并单击 资源限额 右侧的图标以根据推荐值更新资源限额。