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

    文章

    224

    浏览量

    8712

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

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

收藏 人收藏

    评论

    相关推荐

    Kubernetes集群搭建容器云需要几台服务器?

    Kubernetes集群搭建容器云需要几台服务器?至少需要4台服务器。搭建容器云所需的服务器数量以及具体的搭建步骤,会根据所选用的技术栈、业务规模、架构设计以及安全需求等因素而有所不同。以下是一个基于Kubernetes集群的容器云搭建的概述:
    的头像 发表于 10-21 10:06 153次阅读

    降低成本城域网

    电子发烧友网站提供《降低成本城域网.pdf》资料免费下载
    发表于 10-12 11:46 0次下载
    <b class='flag-5'>降低成本</b>城域网

    使用MSP430™ MCU降低PLC模拟输入模块的成本

    电子发烧友网站提供《使用MSP430™ MCU降低PLC模拟输入模块的成本.pdf》资料免费下载
    发表于 09-07 09:42 0次下载
    使用MSP430™ MCU<b class='flag-5'>降低</b>PLC模拟输入模块的<b class='flag-5'>成本</b>

    CC2340系统降低成本的方案剖析

    电子发烧友网站提供《CC2340系统降低成本的方案剖析.pdf》资料免费下载
    发表于 08-27 09:43 0次下载
    CC2340系统<b class='flag-5'>降低成本</b>的方案剖析

    使用Velero备份Kubernetes集群

    Velero 是 heptio 团队(被 VMWare 收购)开源的 Kubernetes 集群备份、迁移工具。
    的头像 发表于 08-05 15:43 349次阅读
    使用Velero备份<b class='flag-5'>Kubernetes</b>集群

    工业物联网系统如何有效降低储能设备运维成本

    在现代工业发展的浪潮中,储能设备作为能源体系的重要组成部分,扮演着不可或缺的角色。储能系统不仅可以提高电网的安全性和稳定性,还能有效利用电力峰谷电价差异,降低电力系统的成本
    的头像 发表于 07-31 10:49 252次阅读

    如何使用Kubeadm命令在PetaExpress Ubuntu系统上安装Kubernetes集群

    Kubernetes,通常缩写为K8s,是一个开源的容器编排平台,旨在自动化容器化应用的部署、扩展和管理。有了Kubernetes,您可以轻松地部署、更新和扩展应用,而无需担心底层基础设施。
    的头像 发表于 07-15 13:31 858次阅读
    如何使用Kubeadm命令在PetaExpress Ubuntu系统上安装<b class='flag-5'>Kubernetes</b>集群

    节能先锋,UV LED固化炉如何降低生产成本

    在制造业的激烈竞争中,如何降低生产成本、提高生产效率成为了企业关注的焦点。近年来,随着节能环保意识的不断提升,UV LED固化炉作为节能先锋,凭借其出色的节能性能和高效的固化效率,成为了降低生产
    的头像 发表于 05-14 11:32 486次阅读
    节能先锋,UV LED固化炉如何<b class='flag-5'>降低</b>生产<b class='flag-5'>成本</b>

    能源管理系统如何降低运维成本

    智能运维管理系统、电能集抄系统、移动端app的应用,有效降低了人工成本和运维成本,优化了运行策略,实现了设备的使用寿命延长,降低了运维
    的头像 发表于 04-16 14:45 529次阅读
    能源管理系统如何<b class='flag-5'>降低</b>运维<b class='flag-5'>成本</b>?

    数字化车间MES管理系统是如何降低企业生产成本

    数字化车间MES管理系统是如何降低企业生产成本 数字工厂管理系统在降低制造企业生产成本方面发挥了重要的作用。通过优化物流和信息流,实现生产过程的自动化、智能化和可视化,数字工厂管理系统
    的头像 发表于 03-18 13:53 433次阅读
    数字化车间MES管理系统是如何<b class='flag-5'>降低</b>企业生产<b class='flag-5'>成本</b>

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

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

    SOLIDWORKS 2024:优化生产流程,降低成本

    在制造业日益竞争激烈的今天,企业对于生产流程的优化和成本控制的需求日益迫切。SOLIDWORKS 2024以其强大的工程设计和分析功能,为生产流程的优化和成本降低提供了有力支持。
    的头像 发表于 01-23 14:47 499次阅读

    Kubernetes Gateway API攻略教程

    Kubernetes Gateway API 刚刚 GA,旨在改进将集群服务暴露给外部的过程。这其中包括一套更标准、更强大的 API资源,用于管理已暴露的服务。在这篇文章中,我将介绍 Gateway
    的头像 发表于 01-12 11:32 882次阅读
    <b class='flag-5'>Kubernetes</b> Gateway API攻略教程

    使用Jenkins和单个模板部署多个Kubernetes组件

    在持续集成和部署中,我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本,我们可以自动化这个过程。在本文中,我将演示如何使用Jenkins Pipeline及单个
    的头像 发表于 01-02 11:40 760次阅读
    使用Jenkins和单个模板部署多个<b class='flag-5'>Kubernetes</b>组件

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

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