Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >K8s降本增效之成本优化篇

K8s降本增效之成本优化篇

作者头像
zouyee
发布于 2023-02-06 02:41:42
发布于 2023-02-06 02:41:42
1.2K0
举报
文章被收录于专栏:Kubernetes GOKubernetes GO

受全球疫情和经济放缓的影响,在国内,中小型企业正在逐步采用混合云,来实现满足数据安全、行业合规及业务发展的需求,混合云为企业提供两全其美优势。规划和构建混合云架构既是一种技术策略,也是一种财务工具。

翻译|zouyee

编辑|阎锡山

接受范围|中度

基于Kubernetes构建混有云的优势主要包括:

  • 可扩展性:Kubernetes可以通过自动扩展容器来满足应用程序的流量需求,这使得用户可以更加灵活地满足业务增长的需求。
  • 可移植性:Kubernetes可以跨多个云环境和硬件平台运行,这使得用户可以更加方便地在不同的云环境中部署应用程序,并且可以根据自己的需要来选择最合适的云服务提供商。
  • 高可用性:Kubernetes可以通过负载均衡和自动故障转移来确保应用程序的高可用性,这使得用户可以避免因应用程序故障而导致的损失。
  • 操作简单:Kubernetes提供了丰富的API和工具,可以帮助用户更加方便地管理和操作容器,减少人工干预的需求。

Kubernetes纵有千般好,但在管理云成本方面也存在一系列挑战。在本文中,我们将分享在Kubernetes云成本优化的五个最佳实践。

以下是优化Kubernetes云成本的五个最佳实践:

  • Pod 合理资源分配
  • 节点合理资源分配(或虚拟机合理资源分配)
  • 自动伸缩( Pod vpa、Pod hpa和cluster autoscaler)
  • 节点碎片整理
  • 利用云折扣(预留实例、折扣、节省计划等)

通过运用这些实践,可以提高应用程序的性能,同时降低成本。

云成本最佳实践

Pod合理资源配置

Pod是在 Kubernetes 中创建和管理的、最小的可部署的计算单元,其可以包含一个或多个容器。下面是一个Kubernetes示例集群,以帮助可视化Kubernetes集群的组件是如何组合在一起的。

在配置Kubernetes集群时,可以合理的配置资源的request和limits,开发人员通过设置配置文件中的request和limits来控制每个pod中容器的CPU和内存资源的数量。

为了帮助降低Kubernetes集群的成本,需要合理的设置资源request和limits并维持应用性能。Kubernetes提供了Pod vpa工具,VPA 使用户无需为 pod 中的容器设置资源请求。配置后,它将根据资源(cpu 与内存)使用情况自动设置 requests。在对 pod 的调度过程中,使得每个 pod 都可以使用适当的资源量从而分配到适合的节点上,从而提升集群资源的利用率,同时可以最大限度地降低容器内存或 CPU 不足的风险。关于vpa更多介绍可以参看:K8s降本增效之VPA上篇

节点调整

类似于调整 Pod 资源配置,需要确保 Kubernetes 集群中使用合适类型与资源配比的节点,以运行工作负载。举个例子,假设一个节点,它有 10 个 CPU 和 10 GB 的 RAM,每月的费用为 $100,同时有一个工作负载,需要 4 个 CPU 和 4 GB 的 RAM 来运行。在这种情况下,使用这个节点就会浪费计算和内存资源,最终导致成本的上升。相反,如果使用一个小的节点来运行这个工作负载,就可以节省资源,达到降低成本的目的。

确保测量您的应用程序所需的资源,并在可能的情况下减少节点的数量和大小。这样可以通过提升分配率,帮助您更有效地利用集群中的资源,减少计算和存储资源的浪费,从而达到降低成本的目的。但是,就性能而言,如果节点上的 Pod 数量过多,可能会导致性能下降,操作可能会变慢,甚至会变得不可靠。因此,托管的 Kubernetes 服务通常会对节点的 Pod 数量施加限制。以下是主要云提供商的每个节点 Pod 数量限制:

  • 在 Amazon Elastic Kubernetes Service(EKS)中,每个节点的最大 Pod 数量取决于节点类型,范围在 4 到 737 之间。
  • 在 Google Kubernetes Engine(GKE)中,无论节点类型如何,每个节点的限制都是 110 个 Pod。
  • 在 Azure Kubernetes Service(AKS)中,默认限制是每个节点 30 个 Pod,但可以增加到 250 个。

自动扩缩

通过调整 Pod 和节点的资源,可以通过提高 Kubernetes 集群的分配率,从而降低成本。但是,要知道最适合运行的 Pod 的资源配置或节点类型及相应的数量,并能够快速跟进集群的变化是一项重大挑战。手动伸缩云容量既困难又耗时,除了要注意跟踪系统中所发生的一切外,你通常还需要注意:

  • 优雅地处理流量高峰和低谷——并在你使用的所有服务中为每个虚拟机垂直伸缩资源;
  • 确保应用于一个工作负载的更改不会对其他工作负载造成任何问题;
  • 自行配置并管理资源组,以确保它们包含适合你的工作负载的资源。

为了克服这一挑战,Kubernetes 提供了自动扩展功能,以确保使用适合的 Pod、节点的大小和数量。Kubernetes 社区提供了一些工具可以管理活动 Pod 和节点的大小和数量:

  • Horizontal Pod Autoscaling:根据工作负载的 CPU 或内存使用率自动扩展 Pod 的数量。
  • Cluster Autoscaler:根据集群中 Pod 的需求自动扩展或缩小节点的数量。

使用这些工具,可以确保集群的资源使用率达到最优,并且可以快速适应变化,从而保障性能的同时降低成本。确保应用程序不仅在必要时扩展,而且在适当的时候收缩,可以节省大量成本。

节点碎片的再平衡

随着时间的推移,任何活动的 Kubernetes 集群都会经历一系列重复的部署和周期性的扩展,这就意味着会不断添加和删除 Pod 和节点。这个周期通常会在集群中产生一些效率低下的情况。我们已经讨论过的上述三个措施中,往常可以通过调整 Pod 的大小、调整节点的大小以及自动扩展来解决大多数问题,但是需要特别注意的问题之一是 Kubernetes 集群中的节点资源碎片化,

由于 Kubernetes 调度程序无法预测未来的 Pod 大小和节点添加,随着时间的推移,许多不一致性会出现在 Pod 的调度中。最终,Pod 会被调度到各个节点上,导致任何新的 Pod 无法在任何单个节点上满足所需的资源,使 Pod 无法调度,即使在节点上可能有更多的容量,但仍然需要扩展。这样就产生一个假的资源紧张现象,可以通过整合这些可用资源片段来避免。

这可以通过识别和迁移节点间的特定 Pod 来实现,以整合可用的资源。在大型集群中,重新平衡未优化的 Kubernetes 集群尤为重要,以避免浪费资源,节省不必要的开支。

总而言之, Kubernetes 集群的再平衡需要长期并持续的执行(Pod 配置优化、节点配置优化和自动扩展)措施,其次,需要考虑的是如何工具化、智能化的执行上述策略。

合理利用采购选项

云服务商提供不同的资源购买选项,可以通过修改服务合同条款提供几种折扣价格选项。这些资源购买选项与非容器化基础架构一样,均适用于 Kubernetes,例如:

  • On-demand Instances:按小时或按秒支付启动的实例
  • Savings Plans:通过对使用量做出的承诺(每小时美元)并签署一年或三年的期限,降低 Amazon 节点成本(EC2 或 Fargate)(仅适用于 AWS)
  • Reserved Instances:通过承诺一年或三年支付资源获得折扣价格(Azure 称之为“Reservations”,Google Cloud 称之为“Committed Use Discounts”)
  • Spot Instances:与 on-demand 价格相比,折扣力度更大的竞价实例(Azure 称之为“Azure Spot VMs”,Google 称之为“Preemptible VMs”)

提供商对资源购买选项的命名方式可能有所不同,并且有些选项可能仅适用于特定的提供商。因此,最好仔细研究各提供商的选项,并选择适合您应用程序的选项。

抢占式实例在容器化环境中特别适用。抢占式实例在不同的云提供商中有不同的名称。Amazon 称之为“Spot Instances”,Azure 称之为“Spot VMs”,Google Cloud 称之为“Preemptible VMs”。无论您选择哪个云提供商,抢占式实例的目的都是一样的:用户可以从云提供商请求未使用的资源,并以比 on-demand 价格更低的成本使用这些资源。

关于抢占式资源额使用,需要注意,如果云提供商需要将其撤回以供 on-demand 或预留客户使用,则实例可能随时丢失,许多关键应用程序不适合该场景,但对于可以容忍轻微中断的应用程序来说非常适合,因此需要合理的配置spot与on-demand比例,是业务稳定性与成本优化的关键之一。

由于笔者时间、视野、认知有限,本文难免出现错误、疏漏等问题,期待各位读者朋友、业界专家指正交流。

参考文献

1.https://cast.ai/blog/6-top-cloud-cost-optimization-issues-to-avoid-in-2022-and-how-to-deal-with-them

2. https://blogs.vmware.com/cloudhealth/best-practices-optimize-kubernetes-cloud-costs/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DCOS 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
6个优化策略,助你降低K8s成本
Kubernetes 早已成为容器编排引擎的事实标准,而随着 Kubernetes 环境的复杂性持续增长,成本也在不断攀升。CNCF 发布的调查报告《Kubernetes 的 FinOps》显示,68%的受访者表示 Kubernetes 开销正在上涨,并且一半的人所在的组织经历了每年超过20%的开销增长。
我是阳明
2023/08/21
6240
6个优化策略,助你降低K8s成本
Kubernetes 降本增效标准指南 | 基于K8s 扩展机制构建云上成本控制系统
Kubernetes 作为 IaaS 和 PaaS 中间的一层,通过声明式 API/控制器模式、以应用服务为中心、并且从API到运行时都提供了高度灵活的可扩展机制,为云厂商、各企业构建应用托管服务甚至云原生服务提供了统一的标准和基础设施管理的各项能力。
腾讯云原生
2021/04/25
3.4K4
Kubernetes 降本增效标准指南 | 基于K8s 扩展机制构建云上成本控制系统
Kubernetes自动伸缩机制,为你降本增效
从技术上讲,容器化应用能该帮助组织更具有成本的优势,但Kubernetes到处布满了成本陷阱,可能会使你超出预算。幸运的是,有一些策略可以控制云成本,自动伸缩就是其中之一。Kubernetes带有三个内置的自动伸缩机制来帮助你做到这一点。它们配合得越好,运行应用程序的成本就越低。
kubernetes中文社区
2021/08/12
1.4K0
2022 年需要避免的 6 个云成本优化问题及解决方案
降低云成本已连续五年成为企业最关注的项目。根据 2021 年云计算状况报告,超过 60% 的组织计划优化其云成本。本文介绍了导致云资源、时间和金钱浪费的最常见问题,以及相应的有效解决方案。
深度学习与Python
2022/03/23
5450
2022 年需要避免的 6 个云成本优化问题及解决方案
kubernetes 降本增效标准指南|理解弹性,应用弹性
王孝威,腾讯云容器产品经理,热衷于为客户提供高效的 Kubernetes 使用方式,为客户极致降本增效服务。 弹性伸缩在云计算领域的简述 弹性伸缩又称自动伸缩,是云计算场景下一种常见的方法,弹性伸缩可以根据服务器上的负载,按一定的规则进行弹性的扩缩容服务器。 弹性伸缩在不同场景下的含义: 对于服务运行在自建机房的公司,弹性伸缩通常意味着允许一些服务器在低负载时进入睡眠状态,从而节省电费(以及用于冷却机器的水费和电费)。 对于使用在托管于云上的机房的公司而言,自动扩展可能意味着更低的费用,因为大多数云提供
腾讯云原生
2021/05/28
3.3K0
kubernetes 降本增效标准指南|ProphetPilot:容器智能成本管理引擎
田奇,腾讯云高级工程师,专注大规模离在线混部,弹性伸缩,云原生成本优化,熟悉Kubernetes,关注云原生大数据、AI。 王孝威,腾讯云容器产品经理,热衷于为客户提供高效的 Kubernetes 使用方式,为客户极致降本增效服务。 前言 随着 Kubernetes 的普及,企业已经普遍接受了容器,正在向云原生演进。但是当前的 Kubernetes 只解决云原生的第一步(Day 1),就是利用容器编排调度和声明式API等,来解决资源获取、应用部署、高可用容灾、基础运维等难题。但是目前采纳 Kubernet
腾讯云原生
2021/07/27
1.4K0
K8s降本增效之VPA上篇
VPA全称VerticalPodAutoscaler,即Pod的横向扩缩,其根据容器资源使用率自动设置CPU和内存的requests及limit,从而允许在节点上进行适当的调度,以便为每个 Pod 提供适当的资源。它既可以缩小过度请求资源的容器,也可以根据其使用情况随时提升资源不足的容量。
zouyee
2023/01/11
1.6K0
小红书的降本增效之路
作者 | 孙晓飞 整理 | 马可薇 策划 | 孙瑞瑞、丁晓昀 本文由 InfoQ 整理自小红书基础技术部后端开发 孙晓飞 在 QCon 全球软件开发大会(北京站)2022 上的演讲《小红书的降本增效之路》。 大家好,我是孙晓飞,目前就职于小红书容器架构组,负责团队内调度系统整体工作,拥有 6 年云原生相关开发设计经验,是 Kubernetes 和 Volcano member。本文将分享过去一年中,容器架构团队为小红书和整体容器服务在降本增效方面所采用的方案措施。 小红书与云原生 小红书早
深度学习与Python
2023/04/21
9130
小红书的降本增效之路
云计算成本管理的6个技巧
为了避免每月云计算支出超出组织的预期,组织可以使用容器,容量预购和更多的云成本管理策略来控制失控的云支出。 在云中运营组织的业务与在本地部署数据中心运行相比是根本不同的。当运营不同时,其成本的策略也不同。 从财务角度来说,数据中心需要大量的建筑资本支出,服务器和软件许可证的额外资本支出,以及为服务器和冷却系统供电以及维护和管理的虽然较小但重要的运营支出。 在云计算中没有资本支出。相反,却有显著的运营支出,用于服务器虚拟机实例,存储,网络流量,软件许可证和其他细节。 从成本管理的角度来看,将计算负载转移到云
静一
2018/03/28
1.4K0
云计算成本管理的6个技巧
K8S 1.12 重磅发布|全面解读 15 个重大功能更新
| 为 | 容 | 器 | 技 | 术 | 而 | 生 |
CNCF
2019/12/06
1.3K0
K8s降本增效之Descheduler篇
在K8s集群治理过程中,常常会因CPU、内存等高使用率状况而形成热点,既影响了当前节点上Pod的稳定运行,也会导致节点发生故障的几率的激增,为了应对集群节热点、负载不均衡等问题,需要动态平衡各个节点之间的资源使用率,因此需要基于节点的相关监控指标,构建集群资源视图
zouyee
2023/02/06
1.3K0
DeepSeek与Kubernetes:解锁大规模训练集群管理密码(13/18)
摘要:在大规模深度学习模型训练中,DeepSeek 与 Kubernetes 的结合为训练集群管理带来了显著的优势。DeepSeek 优化了分布式训练算法和资源利用,而 Kubernetes 提供了强大的容器化应用编排和管理能力。通过 Kubernetes 的弹性资源调度、容错机制与断点续训技术,以及成本优化监控方案,实现了训练任务的高效执行、稳定运行和经济运行。本文深度剖析了两者协同工作的技术细节、实际案例中的应用成效以及未来发展挑战与展望,展现了其在人工智能领域的强大变革潜力与广泛发展前景。
正在走向自律
2025/03/02
2670
DeepSeek与Kubernetes:解锁大规模训练集群管理密码(13/18)
K8s基础1 介绍
Kubernetes具有完备的集群管理能力,包括多层次的安全防护和准入机制/多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复功能、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配额管理能力。
陈不成i
2021/07/01
3940
k8s多维度自动弹性伸缩
最新版 HPA:autoscaling/v2beta1,有四种类型的 metrics
kinnylee
2022/07/01
1.7K0
云计算成本优化终极指南
Pinterest 由于在某个节日期间对云计算使用量的增加,该公司的云计算账单大大超过了原先的预估。Pinterest 必须计划 1.7 亿美元的预留资源上向亚马逊云科技再额外支付 2000 万美元。
深度学习与Python
2022/03/23
7620
云计算成本优化终极指南
k8s 生产环境最佳实践
众所周知,Kubernetes很难! 以下是在生产中使用它应遵循的一些最佳实践。遵循这些步骤能够确保更高的安全性和生产效率。
iginkgo18
2023/04/08
1.7K0
了解Kubernetes主体架构(二十八)
接下来还会逐步完善本教程,比如Helm、ELK、Windows Server容器等等。
心莱科技雪雁
2019/07/08
1.1K0
保持集群精益意味着什么?
遵循精益方法可以帮助我们显著提高 Kubernetes 的投资回报率,改善工作负载性能,并节省维护和故障排除的时间。
云云众生s
2024/07/22
1770
17个应该了解的Kubernetes优化
Kubernetes 持续发展,提供可以显著增强集群性能、效率和安全性的新功能和优化。对于高级工程师,掌握这些优化可以带来更强大、更可扩展且更具成本效益的部署。以下是 18 个高级 Kubernetes 节点优化的精选列表,按其在 2024 年的预期实用性和受欢迎程度排序。
云云众生s
2024/03/28
5590
「容器架构」 K8s 集群如何规划工作节点的大小?
欢迎来到小巧的Kubernetes学习——一个定期的专栏,讨论我们在网上看到的最有趣的问题,以及Kubernetes专家在我们的研讨会上回答的问题。
架构师研究会
2020/09/08
3.1K0
「容器架构」 K8s 集群如何规划工作节点的大小?
相关推荐
6个优化策略,助你降低K8s成本
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档