6个优化策略,助你降低K8S成本

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

Kubernetes 早已成为容器编排引擎的事实标准,而随着 Kubernetes 环境的复杂性持续增长,成本也在不断攀升。CNCF 发布的调查报告《Kubernetes 的 FinOps》显示,68%的受访者表示 Kubernetes 开销正在上涨,并且一半的人所在的组织经历了每年超过20%的开销增长。
 

因此,Kubernetes 成本管理和优化亟需得到系统管理员的重视。本文我们将了解6个优化 Kubernetes 成本的策略和方法。
 

1、合理调整 Pod 和节点

降低成本最简单的方式之一是管理 Pod 和节点使用的资源。尽管通常的建议是留有足够的机动空间,但过度配置或允许应用程序无限制地使用资源会带来灾难性的后果。例如,假设一个Pod由于应用程序的错误而消耗了节点的所有可用内存,不必要地利用了资源,这会导致其他 Pod 完全没有资源可用。
 

为避免这一情况的发生,用户可以在命名空间级别用 Kubernetes 资源配额和限制区间来限制资源利用率。此外,还可以在容器层面上指定资源请求和限制,强制执行容器可以请求多少资源以及资源的最大限制。
 

节点的大小取决于 Pod 所使用的资源。如果你的工作负载只利用了节点中50%的资源,并且短期内资源使用量不会激增,那么用户可以适当缩小节点的规模以降低成本。
 

另一个考虑因素是调整在单个节点上可以运行的 Pod 数量。即便在没有硬性限制的情况下,在单个节点上运行大量的 Pod 也会导致资源利用效率低下。鉴于这类情况,一部分K8S的托管服务提供商已经限制了单个节点上可以运行 Pod 的数量。
 

2、监控集群和基础设施

合理监控集群环境,包括底层或依赖项资源,有助于管理成本。无论你是使用托管的 Kubernetes 集群还是自建的集群,监控资源利用率和总体成本都是降低成本的第一步,这能够让用户一目了然地了解计算、存储、网络利用率等情况,以及成本在它们之间的分布情况。
 

云厂商通常能够提供内置工具和基本的监控功能。而利用 Prometheus、Kubecost 等工具可以让用户获得更为全面的洞察。近日发布的应用统一部署与管理平台 Seal AppManager 中也内置了成本管理视图,提供 Kubernetes 的资源开销、共享费用(如空闲费用、管理费用)的成本汇算和分摊,并内置多维度成本分析视图为用户提供成本洞察。另外,用户也可以依据集群、项目、应用等维度自定义成本视图。

6个优化策略,助你降低K8S成本
 

3、配置弹性伸缩

Kubernetes 支持3类弹性伸缩:

  • HPA:自动水平伸缩
  • VPA:垂直自动伸缩
  • 集群自动伸缩
     

自动充分利用 Kubernetes 弹性伸缩的特性可以帮助用户以一种简单、高效的方式降低整体 Kubernetes 成本。
 

HPA 可以监控 Pod 的使用情况,自动调整大小,以保持预期的使用水平。VPA 则可以调整集群中的资源请求和容器限制。自动伸缩会根据需求自动从 Kubernetes 集群中添加或删除节点,它有助于确保工作负载总是有足够的基础设施资源来完成它们的工作,但又不至于让用户最终为闲置的基础设施付费。
 

现阶段而言,并非所有的 Kubernetes 服务或发行版都支持自动伸缩。但是,如果你所采用的服务支持,那么它可以帮助你大幅降低 Kubernetes 成本。
 

4、为 K8s 工作负载选择不同的购买策略

对于 AWS 或者 GCP 来说,按需实例是最昂贵的选项。因此,我们应该充分利用预留的实例甚至是 Spot instances(竞价型实例)。
 

相较于按需价格,Spot instances 最高可获得90%的折扣(即1折)。它们是短期工作或无状态服务的最佳选择,可以快速重新调度,同时不会丢失数据。为避免中断,用户可以使用工作负载管理工具,将 Spot 实例保留在某个固定时段内。
 

为每个节点都规划购买策略,并在可能的情况下优先使用 Spot 实例,以充分利用购买折扣。如果 Spot 实例不适合你的工作负载,比如你的容器正在运行数据库,那么可以购买具备稳定可用性的节点。在任何情况下,尽量减少使用按需资源。
 

5、Kubernetes 调度

调整 Pod 和节点的大小和规模后,需要确保 pod 被调度到了正确的节点上。K8s 调度流程将 Pod 与节点相匹配,并且调度器的默认行为可以自定义。假设你想把具有关键业务功能的容器放在一个高性能的节点上,而把其他不太关键的组件放在相对较低性能的节点上。默认情况下,即便在不同性能层上配置节点,K8s 也无法匹配正确的节点。
 

如果一个非关键的pod被安排在一个高性能的节点上,会导致性能浪费并最终提高成本。Kubernetes 提供诸如 nodeSelector、亲和性以及污点和容忍等特性以解决此类问题并优化调度。它们可以用来完全配置Kubernetes的调度过程,以满足用户的需求,从而使用户能够有效地使用整个节点的可用资源。
 

6、简化开发

尽管容器化的浪潮愈演愈烈,但并不意味着一切都需要容器化。一些开发团队试图为了容器化而容器化应用程序或工作负载,这可能会导致在 Kubernetes 集群上运行不必要的工作负载。这类工作负载在其他技术上也可以轻松运行,并且成本会更低。譬如,可以将无服务器技术用于基于事件的特性,而主要将 Kubernetes 用于高可用性和关键任务的功能。
 

总结

成本管理并不总是开发人员的最高优先级,但是确实是必须考虑的方面。正确的解决方案可以使Kubernetes的成本管理变得及时、经济和毫不费力,使企业能够在成本和性能之间实现完美的平衡。
 

利用不同的云供应商建立多云环境可以使用户从每个平台提供的折扣中获益,甚至可以在平台之间迁移工作负载以选择最优惠的选项,同时不会出现服务中断或服务质量下降的情况。另外,也可以选择使用不同的技术,将功能卸载到最符合要求的技术或服务上。这种选择可以在有效管理整个应用程序的同时,更深度地管理成本。文章来源地址https://www.toymoban.com/news/detail-426734.html

到了这里,关于6个优化策略,助你降低K8S成本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Kubernetes(k8s)实战:Kubernetes(k8s)部署Springboot项目

    wordpress是用于快速搭建博客系统。 该yaml文件创建一个mysql,并且生成一个service,service对外暴露的端口是3306 我们发现,搭建成功了,用浏览器访问192.168.56.101:30493,发现访问成功了! 在集群中,pod之间可以通过service 的name进行访问,不仅仅是ip,这就意味着,service中不仅帮

    2024年02月12日
    浏览(86)
  • K8s(Kubernetes)学习(二):k8s集群搭建

    minikube 只是一个 K8S 集群模拟器,只有一个节点的集群,只为测试用,master 和 worker 都在一起。 裸机安装 至少需要两台机器(主节点、工作节点个一台),需要自己安装 Kubernetes 组件,配置会稍微麻烦点。 缺点:配置麻烦,缺少生态支持,例如负载均衡器、云存储。 直接用

    2024年02月09日
    浏览(47)
  • Kubernetes(K8S)学习(三):K8S实战案例

    附:查看命名空间命令 kubectl get namespace kubectl get ns 创建wordpress-db.yaml文件,这里以mysql作为wordpress的db: yaml内容: 根据wordpress-db.yaml配置,创建资源mysql数据库: yaml中MySQL配置说明: 用户:root       密码:rootPassW0rd 数据库名称:wordpress 用户:wordpress       密码:wo

    2024年04月09日
    浏览(73)
  • K8s(Kubernetes)学习(一):k8s概念及组件

    Kubernetes中文文档:https://kubernetes.io/zh-cn/docs/home/ Kubernetes源码地址:https://github.com/kubernetes/kubernetes 首先要了解应用程序部署经历了以下几个时代: 传统部署时代:在物理服务器上运行应用程序。 虚拟化部署时代:虚拟化技术允许你在单个物理服务器的 CPU 上运行多台虚拟机

    2024年02月05日
    浏览(43)
  • Kubernetes(K8S)学习(四):K8S之Storage

    kubernetes使用NFS共享存储有两种方式: (1)手动方式静态创建所需要的PV和PVC(见本文1.3.2小节)。 (2)通过创建PVC动态地申请PV(见本文1.4.2小节)。 Volume地址 :https://kubernetes.io/docs/concepts/storage/ 1.1.1、Volume简介 volume(/ˈvɒljuːm/,IT词汇–百度百科): 在电脑中, volume(

    2024年04月15日
    浏览(28)
  • 如何降低AI辅写率:七大策略助你驾驭智能写作

    大家好,小发猫降重今天来聊聊如何降低AI辅写率:七大策略助你驾驭智能写作,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 如何降低AI辅写率:七大策略助你驾驭智能写作 随着人工智能技术的广泛应用,

    2024年04月09日
    浏览(38)
  • k8s的策略

    Scheduler的调度算法: 预算策略 过滤出合适的节点 优先策略 选择部署的节点 NodeName:硬策略,不走调度策略,node1 nodeSelector:根据节点的标签选择,会走一个调度算法 只要是走调度算法,在不满足预算策略的情况下,所有的pod都是pending Node节点的亲和性: 硬策略:必须满足

    2024年01月16日
    浏览(23)
  • Kubernetes k8s

    一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理。 从架构设计层面,k8s能很好的解决可用性,伸缩性;从部署运维层面,服务部署,服务监控,应用扩容和故障处理,k8s都提供了很好的解决方案。 k8s主要包括以下几点: 服务发现与调度 Kubernetes

    2024年02月19日
    浏览(37)
  • Kubernetes(K8s)

    为 容器化 应用提供集群部署和管理的开源工具,由 Google 研发,在2014开源。 Pod :一个 pod 可以运行多个容器。 运行在 cluster 所有节点上,负责启动 POD 和容器。 用于初始化 cluster Kubenetes 命令行工具,部署和应用,查看各种资源、创建、删除和更新组件。 统一路由

    2024年02月08日
    浏览(34)
  • Kubernetes(k8s)实战:使用k8s+jenkins实现CICD

    CIDI(Continuous Integration,Continuous Delivery Deployment),持续集成,持续部署,持续发布。 也就是说,在本地开发完代码之后,push到远程仓库,然后代码打包、部署的这个过程完全是自动化完成的。 但是我们不要进入一个误区,CICD并不意味着一定就是这一套流程,只要实现了代

    2024年02月12日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包