Kubernetes VPA

这篇具有很好参考价值的文章主要介绍了Kubernetes VPA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kubernetes Vertical Pod Autoscaler (VPA) 是一种自动缩放器,可以根据历史资源使用情况对CPU memory 的 request 和 limit 调整。如果使用得当,可以帮助您在容器级别高效、自动地分配 Kubernetes 集群的资源。

从技术角度了解 VPA 的工作原理以及它的作用可以更好的利用这种机制

本文将介绍三种类型的自动扩缩容,然后详细探讨 VPA 的用法和优势,以便可以使用 Kubernetes VPA!

Kubernetes三种自动扩缩容机制

有三种类型的 K8s 自动扩缩容机制,每种都有不同的用途。它们是:

  • Horizontal Pod Autoscaler(HPA):调整应用程序的副本数。HPA 根据 CPU 利用率扩展复制控制器、部署、副本集或有状态集中的 Pod 数量。HPA 还可以配置为根据自定义或外部指标做出扩展决策。
  • Cluster Autoscaler (CA):调整集群中的节点数。当节点没有足够的资源来运行 Pod(添加节点)或节点仍未充分利用时,群集自动缩放程序会自动添加或删除群集中的节点,并且可以将其 Pod 分配给另一个节点(删除节点)。
  • Vertical Pod Autoscaler (VPA):调整集群中容器的资源请求和限制。

什么是 Kubernetes VPA?

Kubernetes Vertical Pod Autoscaler (VPA) 是在集群中安装的组件。它增加和减少容器 CPU 和内存资源配置,使集群资源分配与实际使用情况保持一致。

接下来,介绍一些重要的 VPA 概念。

Kubernetes VPA 资源配置类型

使用 VPA,我们可以在 Pod 的每个容器上管理两种不同类型的资源配置:

  • 请求Requests
  • 限制Limits
什么是请求?

请求定义容器所需的最小资源量。例如,应用程序可以使用超过 256MB 的内存,但如果其请求是 256MB 的内存,则 Kubernetes 将保证容器至少为 256MB。

什么是限制?

限制定义给定容器可以消耗的最大资源量。您的应用程序可能需要至少 256MB 的内存,但您可能希望确保它消耗的内存不超过 512MB,即将其内存消耗限制为 512MB

Kubernetes VPA vs. HPA

从根本上说,VPA 和 HPA 之间的区别在于它们的扩展方式。HPA 通过添加或删除 Pod 进行扩展,从而水平扩展容量。但是,VPA 通过增加或减少现有 Pod 容器中的 CPU 和内存资源进行扩展,从而垂直扩展容量。下表更详细地解释了 Kubernetes VPA 和 HPA 之间的差异。

需要调整容量 HPA VPA
需要扩容时 添加更多Pod 增加现有 Pod 容器的 CPU 或内存资源
需要缩容时 移除Pod 减少现有 Pod 容器的 CPU 或内存资源

参考下图了解 VPA 的工作原理:
Kubernetes VPA

VPA 的组件

VPA 部署有三个主要组件:VPA Recommender, VPA Updater, and VPA Admission Controller。

VPA Recommender:
  • 监视资源利用率并计算目标值。
  • 查看指标历史记录、OOM 事件和部署spec,并提出公平的请求。限制根据定义的限制-请求比例提高/降低。
VPA 更新程序:
  • 逐出那些需要新资源限制的 Pod。
  • 实现Recommender建议的内容(如果定义了“updateMode: Auto”)。
VPA 准入控制器:
  • 每当 VPA 更新程序逐出并重新启动容器时,都会在新容器启动之前更改 CPU 和内存设置(使用 Webhook)。
  • 如果 Pod 需要在垂直容器自动缩放程序将 updateMode 设置为“自动”时更改容器的资源请求,则逐出容器。由于 Kubernetes 的设计,修改正在运行的 Pod 的资源请求的唯一方法是重新创建 Pod。

Kubernetes VPA 如何工作?

下图提供了 Kubernetes VPA 如何工作的实际示例,并随后对每个步骤进行了编号说明。
Kubernetes VPA

  1. 用户配置 VPA。
  2. VPA Recommender从指标服务器读取 VPA 配置和资源利用率指标。
  3. VPA Recommender提供容器资源建议。
  4. VPA Updater程序会读取容器资源建议。
  5. VPA Updater程序启动容器终止。
  6. deployment意识到容器已终止,并将重新创建容器以匹配其副本配置。
  7. 当容器处于重新创建过程中时,VPA Admission Controller会获取容器资源建议。由于 Kubernetes 不支持动态更改正在运行的 Pod 的资源限制,因此 VPA 无法使用新的限制更新现有 Pod。它会终止使用过时限制的 Pod。当容器的控制器从 Kubernetes API 服务请求替换时,VPA Admission Controller会将更新的资源请求和限制值注入到新容器的spec中。
  8. 最后,VPA 准入控制器会覆盖对容器的建议。在我们的示例中,VPA 准入控制器向 Pod 添加了一个“250m”CPU。

Kubernetes VPA 的局限性

VPA 在许多应用程序中都很有用,但有几个重要的限制需要牢记。

  • 请勿将垂直容器自动缩放与水平容器自动缩放机制一起使用,后者根据相同的资源指标(如 CPU 和内存使用情况)进行缩放。这是因为当指标(CPU/内存)达到其定义的阈值时,VPA 和 HPA 将同时发生扩展事件,这可能会产生未知的副作用并可能导致问题。
  • VPA 可能会建议比集群中可用的资源更多,从而导致 Pod 未分配给节点(由于资源不足),因此永远不会运行。若要克服此限制,最好将 LimitRange 设置为最大可用资源。这将确保 Pod 请求的资源不会超过限制范围定义的资源。

总结

以下是本文关键要点的摘要:文章来源地址https://www.toymoban.com/news/detail-402739.html

  • Kubernetes 中有三种类型的自动缩放:Horizontal Pod Autoscaler, Cluster Autoscaler, and Vertical Pod Autoscaler
  • 三种自动扩缩容机制都是不同的,了解不同他们的工作原理将有助于更好地配置集群。
  • 在没有 VPA 的情况下使用 HPA 可能会通过复制未充分利用的 Pod 来满足不断增加的工作负载来积累浪费的资源。
  • 使用 VPA 时,请确保设置每个 Pod 的最大资源数,因为 VPA 建议可能会超过集群中的可用资源。

到了这里,关于Kubernetes VPA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 踩坑_vertical-align

    问题: 今天在做一个需求时遇到了如下问题: 代码 渲染 父元素(div)没有设置padding,那么子元素(del)上方的间距是哪里来的呢? 这一切都和 vertical-align 属性有关~ vertical-align属性 vertical-align属性用于指定 行内元素 、 行内块元素 以及 表格单元格 (table-cell)的垂直对齐方式。

    2024年02月16日
    浏览(26)
  • untiy horizontal 、vertical 计算角度增量

     Vector3 angle = this.transform.localEulerAngles;     private void MovementRotation2(float horizontal, float vertical)         {             //Debug.Log(\\\"horizontal \\\"+horizontal+\\\" vertical \\\"+vertical+\\\" \\\"+this.transform.rotation);             //直接让 Z 轴注视旋转,给它一个方向即可。             Quaternion dir = Quat

    2024年02月09日
    浏览(24)
  • 一种基于闭包函数实现自动化框架断言组件的设计实践

    目前测试组同学基本具备自动化脚本编写能力,为了提高效率,如何灵活运用这些维护的脚本去替代部分手工的重复工作?为了达到测试过程中更多的去使用自动化方式,如何能够保证通过脚本覆盖更多的校验点,提高自动化测试的精度和力度?那么一定是不断的丰富断言,

    2024年02月08日
    浏览(49)
  • CSS中的vertical-align属性

    This property affects the vertical positioning inside a line box of the boxes generated by an inline-levelelement. 官方文档的翻译:vertical-align会影响 行内块级元素 在一个 行盒 中 垂直方向 的位置 思考:一个div没有设置高度的时候,会不会有高度? 没有内容,没有高度 有内容,内容撑起来高度 但是

    2024年02月11日
    浏览(34)
  • vertical-align不生效及解决办法

    vertical-align  属性通常用于设置行内元素(如文本)在父元素中的垂直对齐方式。如果它不起作用,可能是因为: 没有给父元素设置高度和行高。 元素不是行内元素,而是块级元素。 样式被其他样式覆盖。 浏览器兼容性问题。 您需要确保父元素有高度和行高,并且将子元素设

    2024年02月15日
    浏览(29)
  • 解决电脑无故自动关机或重启的15种方法,总有一种适合你

    你的Windows PC是否在没有警告的情况下关闭或重新启动?这背后有几个潜在的原因。例如,它可能是软件/硬件冲突、过热或硬盘驱动器错误。本故障排除指南将概述在Windows 10/11中修复自动关闭和重新启动的多个解决方案。 如果你的计算机经常关闭,则必须在安全模式下启动计

    2024年04月23日
    浏览(24)
  • Matlab 一种基于机载LiDAR点云电力线自动提取方法之二

    之前的方法在面对地面为水面时,由于地面点的缺失会导致电力线提取错误,因此这里使用CSF地面点滤波改进电力线的提取过程。关于CSF滤波的相关配置可以详看:Matlab CSF地面点滤波(插件),改进之后的代码如下所示。

    2024年01月19日
    浏览(29)
  • 分享kubernetes部署:基于Ansible自动安装kubernetes

    基于Ansible自动安装kubernetes 环境准备 我们以如下机器环境为例: 开放端口: 控制平面节点 工作节点 请按如上中规定的开放端口,或关闭防火墙: systemctlstopfirewalld systemctldisablefirewalld 安装常用工具 sudoyuminstall-yyum-utilswgetvimmtrcurltelentlsofgitunzip 下载安装工具 cd/opt/ (部分内容

    2024年02月14日
    浏览(36)
  • VM中Linux虚拟机IP地址总是自动变化的一种解决方法

    一开始使用Xshell远程连接虚拟机中的CentOS 7.9系统时,在重启系统后主机地址总是变化,第一次是192.168.136.134,第二次变成192.168.136.135,,,,,这样非常麻烦,每次都要去修改会话属性或者新建会话,在进行以下操作后解决上述问题: 首先,分别使用ip a和ifconfig两个命令显

    2024年02月15日
    浏览(34)
  • QT入门Spacers之Horizontal Spacer、Vertical Spacer

    目录 一、界面布局介绍及属性 1、Horizontal Spacer 2、Horizontal Spacer基本属性 3、VerticalSpacer的位置与基本属性 此文为作者原创,转载请标明出处! 水平间隔,主要就是布局个水平弹簧的作用,在界面中的位置如下: 关于水平弹簧一些基本属性,有弹簧名称、设置弹簧的高度和宽

    2023年04月08日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包