0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何有效降低Kubernetes成本?

阿铭linux 来源:Kubernetes中文社区 作者: 王延飞 2021-07-27 10:50 次阅读

从技术上讲,容器化应用能该帮助组织更具有成本的优势,但Kubernetes到处布满了成本陷阱,可能会使你超出预算。幸运的是,有一些策略可以控制云成本,自动伸缩就是其中之一。Kubernetes带有三个内置的自动伸缩机制来帮助你做到这一点。它们配合得越好,运行应用程序的成本就越低。

1.Pod水平自动扩缩(HPA)

Pod 水平自动扩缩(HorizontalpodAutoscaler) 可以基于CPU利用率自动扩缩 ReplicationController、Deployment、ReplicaSet 和 StatefulSet 中的pod数量。除了CPU利用率,也可以基于其他应程序提供的 自定义度量指标 来执行自动扩缩。

生产环境中,许多应用程序的使用情况会出现波动,这意味着实时添加或删除pod副本会带来更好的成本收益。这就是 HorizontalpodAutoscaler (HPA) 通过自动执行此操作来提供帮助的地方。

何时使用 HPA?

它非常适合扩展无状态应用程序,当然也可以用于有状态应用。如果将 HPA 与Cluster Autoscaler(CA)结合使用,能够为经常变化的工作负载获得最大的成本节约。当pod数量减少时,这将减少活动节点的数量。

HPA 是如何工作的?

HPA 监控pod以了解pod副本的数量是否需要更改。为了确定这一点,它采用每个pod指标值的平均值,并检查删除或添加副本,是否会使该值更接近目标。

例如,如果你部署的目标CPU利用率为50%,而现在你有五个pod在那里运行,则平均CPU利用率为 75%。为了使pod平均值更接近你的目标,HPA 控制器将增加三个副本。

HPA 最佳实践

为 HPA 提供每个pod资源指标:需要在Kubernetes集群中安装 metrics-server。

为每个容器配置值:HPA 根据观察到的pod的CPU利用率值(来自单个pod的资源请求的百分比)做出扩展决策。如果你没有包含某些容器的值,则计算将不准确并可能导致出现糟糕的扩展决策。

使用自定义指标:HPA 扩展决策的另一个来源是自定义指标。HPA 支持两种类型的自定义指标:pod 指标和对象指标。确保使用正确的目标类型。你还可以使用来自第三方监控系统的外部指标。

2. Pod垂直自动扩缩 (VPA)

Vertical Pod Autoscaler(VPA),即垂直 Pod 自动扩缩容,它根据容器资源使用率自动设置 CPU 和 内存 的requests,从而允许在节点上进行适当的调度,以便为每个 Pod 提供适当的资源。它既可以缩小过度请求资源的容器,也可以根据其使用情况随时提升资源不足的容量。

这种自动缩放机制增加和减少了pod容器的CPU和内存资源请求,以使分配的集群资源与实际使用情况保持一致。VPA 还需要访问Kubernetes指标服务器,因为它仅替换由副本控制器管理(Replication Controller)的pod。

提示:

“如果你的 HPA 配置没有使用CPU或内存来设置其扩展目标,请同时使用 VPA 和 HPA。

何时使用 VPA?

工作负载可能会在某个时候遇到高利用率,但不断增加其请求限制,不是一个好办法。你可能会浪费CPU或内存资源并限制运行它们的节点。将工作负载分布到多个应用程序实例有时候也是很棘手的,这就是 Vertical Pod Autoscaler 的帮助所在。

VPA 是如何工作的?

VPA 部署由三个组件组成:

Recommender : 监控资源利用率并计算目标值,也就是检查历史资源利用率和当前使用的模式,并推荐一个理想的资源请求值

Updater : 检查pods 资源限制是否需要更新

Admission Controller:在创建pod时覆盖其资源请求

由于Kubernetes不允许更改正在运行的pod的资源限制,因此 VPA 首先终止旧的pod,然后将更新的值注入新的pod规范。

VPA 最佳实践

避免在Kubernetes的1.11版本之前使用。

使用updateMode:Off运行 VPA,以了解你要自动缩放的pod的资源使用情况。这将为你提供推荐的CPU和内存请求,也是以后调整的重要基础。

如果工作负载经常出现高使用率和低使用率的峰值,则 VPA 可能会过于激进,因为它可能会不断地一遍又一遍地替换pod。在这种情况下,使用HPA 效果更好。

3. Cluster Autoscaler(CA)

Cluster Autoscaler 在K8S集群中,通过增加/删除其中的Node,达到集群扩缩容的目的。由于 Cluster Autoscaler 控制器工作在基础设施级别,因此它需要具备添加和删除基础设施的权限,你应该安全地管理这些授权信息(例如,遵循最小权限原则)。

何时使用集群自动扩缩器?

如果你希望通过动态扩展节点数量,以最大化当前集群利用率来优化成本,则此自动扩展机制非常有效。对于旨在扩展和满足动态需求的工作负载而言,它是一款出色的工具。

Cluster Autoscaler 如何工作?

它会检查不可调度的pod,然后计算是否可以整合当前部署的所有pod,以在较少数量的节点上运行它们。如果 Cluster Autoscaler 识别出具有可以重新调度到集群中其他节点的pod的节点,它会驱逐它们并删除备用节点。

集群自动扩缩器最佳实践

部署 Cluster Autoscaler 时,要与之相匹配的Kubernetes版本一起使用。(兼容性列表)。

检查集群节点是否具有相同的CPU和内存容量:否则集群自动缩放器将无法工作,因为它假设集群中的每个节点都具有相同的容量。

确保自动缩放的pod都具有指定的资源请求。

总结

自动缩放机制对于控制云成本非常有价值,但它们需要大量的手动配置:

防止 HPA 和 VPA 冲突:你需要检查你的 HPA 和 VPA 策略是否最终发生冲突。密切关注成本,以防止它们失控。

平衡三种机制:你需要平衡三种机制的组合,以确保工作负载支持峰值负载,并在负载较低时将成本保持在最低水平。

参考:https://www.kubernetes.org.cn/9443.html

编辑;jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • kubernetes
    +关注

    关注

    0

    文章

    219

    浏览量

    8567

原文标题:Kubernetes自动伸缩机制,为你降本增效

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ZR机械手:提高生产效率,降低成本有效途径-速程精密

    ZR机械手:提高生产效率,降低成本有效途径-速程精密 在制造业中,如何提高生产效率、降低成本一直是企业追求的目标。随着科技的不断进步,ZR机械手作为一种新型的自动化设备,逐渐成为实现这一
    的头像 发表于 02-28 15:14 168次阅读
    ZR机械手:提高生产效率,<b class='flag-5'>降低成本</b>的<b class='flag-5'>有效</b>途径-速程精密

    Kubernetes RBAC:掌握权限管理的精髓

    Kubernetes RBAC(Role-Based Access Control)是 Kubernetes 中一项关键的安全功能,它通过细粒度的权限控制机制,确保集群资源仅被授权的用户或服务账号访问。
    的头像 发表于 12-25 09:43 195次阅读

    电路板pcb打样降低成本的方法

    电路板pcb打样降低成本的方法
    的头像 发表于 12-13 17:25 378次阅读

    如何降低PLC的使用成本

    降低PLC的使用成本可以帮助提高项目的经济效益。以下是一些方法来降低PLC的使用成本: (1)正确选择PLC型号:在选择PLC时,根据项目需求选择适当的型号。避免过度投资,选择性能和功
    的头像 发表于 11-11 08:10 236次阅读
    如何<b class='flag-5'>降低</b>PLC的使用<b class='flag-5'>成本</b>?

    戴尔科技再次荣获Kubernetes数据存储领导者

    近日,国际权威研究机构GigaOm公布了《2023企业级Kubernetes存储雷达报告》戴尔科技集团连续两年被评为Kubernetes数据存储领导者。
    的头像 发表于 10-26 10:16 400次阅读
    戴尔科技再次荣获<b class='flag-5'>Kubernetes</b>数据存储领导者

    Jenkins pipeline是如何连接Kubernetes的呢?

    Kubernetes 是一个开源的容器编排平台,可以帮助开发团队管理和部署容器化的应用程序。
    的头像 发表于 10-23 11:13 1495次阅读
    Jenkins pipeline是如何连接<b class='flag-5'>Kubernetes</b>的呢?

    Kubernetes Pod如何获取IP地址呢?

    Kubernetes 网络模型的核心要求之一是每个 Pod 都拥有自己的 IP 地址并可以使用该 IP 地址进行通信。很多人刚开始使用 Kubernetes 时,还不清楚如何为每个 Pod 分配 IP 地址。
    的头像 发表于 07-21 10:00 537次阅读
    <b class='flag-5'>Kubernetes</b> Pod如何获取IP地址呢?

    Commvault:护航Kubernetes,不止Kubernetes

    Kubernetes已经不再是只存在于路线图中的未来产品。事实上,几乎所有(94%)已经采用容器的企业都在使用Kubernetes,大多数(86%)企业甚至认为它对他们的运营至关重要。这并不令人意外,Kubernetes正在帮助
    的头像 发表于 07-07 14:42 301次阅读

    ChatGPT团队是如何使用Kubernetes

    在本文中,OpenAI 的工程师团队分享了他们在 Kubernetes 集群扩展过程中遇到的各种挑战和解决方案,以及他们取得的性能和效果。
    的头像 发表于 07-06 11:17 324次阅读
    ChatGPT团队是如何使用<b class='flag-5'>Kubernetes</b>的

    Awesome 工具如何更好地管理Kubernetes

    应用程序,那么 Kubernetes 是必备工具之一。有数百种工具可与 Kubernetes 配合使用以添加更多功能。我说的是用于更好地管理,安全性,仪表板和 Kubernetes 集群监控的工具
    的头像 发表于 06-25 16:12 357次阅读
    Awesome 工具如何更好地管理<b class='flag-5'>Kubernetes</b>

    几种有效降低电源纹波噪声的方法

    在应用电源模块常见的问题中,降低负载端的纹波噪声是大多数用户都关心的。下文结合纹波噪声的波形、测试方式,从电源设计及外围电路的角度出发,阐述几种有效降低输出纹波噪声的方法。
    的头像 发表于 06-20 17:48 1373次阅读
    几种<b class='flag-5'>有效</b><b class='flag-5'>降低</b>电源纹波噪声的方法

    如何降低X-ray无损检测设备的使用成本?-智诚精展

    X-ray无损检测设备作为一种重要的检测设备,其使用成本降低不仅对企业的发展有着显著的价值,同时也有利于提高整个行业的经济效益。因此,如何有效降低X-ray无损检测设备的使用
    的头像 发表于 05-19 09:45 360次阅读
    如何<b class='flag-5'>降低</b>X-ray无损检测设备的使用<b class='flag-5'>成本</b>?-智诚精展

    Kubernetes Pod如何独立工作

    在学习 Kubernetes 网络模型的过程中,了解各种网络组件的作用以及如何交互非常重要。本文就介绍了各种网络组件在 Kubernetes 集群中是如何交互的,以及如何帮助每个 Pod 都能获取 IP 地址。
    的头像 发表于 05-16 14:29 428次阅读
    <b class='flag-5'>Kubernetes</b> Pod如何独立工作

    Kubernetes特性有哪些?

    本文将介绍Kubernetes 的重要特性,这将有助于您更深入地了解 Kubernetes 的功能概念。
    的头像 发表于 05-12 16:16 652次阅读
    <b class='flag-5'>Kubernetes</b>特性有哪些?

    Kubernetes是怎样工作的?

    Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明式配置和自动化,它拥有庞大且快速发展的生态系统,Kubernetes 服务、支持和工具随处可见
    的头像 发表于 05-12 16:13 313次阅读
    <b class='flag-5'>Kubernetes</b>是怎样工作的?