大数跨境

云成本直降60%!Karpenter+Spot实例在QA环境的实战优化

云成本直降60%!Karpenter+Spot实例在QA环境的实战优化 Karpenter
2025-05-07
2

 

Karpenter 开源地址: 

https://github.com/kubernetes-sigs/karpenter

引言

在云计算领域,尤其是在像 QA(Quality Assurance)这样并非生产环境的场景中,基础设施的成本管理始终是一个挑战。

我们的 QA 环境对测试的稳定性要求较高,但我们注意到,大量基础设施成本都花在了 EC2 按需实例上。

经过深入调研,我们决定在 QA 环境中引入 Karpenter,并结合 Spot 实例与中断处理器进行优化。

本文将介绍我们在保证应用可靠性的前提下,从最初的架构出发、一路成功实现云支出大幅缩减的实践过程。

现有架构:引入 Karpenter 之前

在最初的设置中,我们为 QA 工作负载主要混合使用 EC2 按需实例。

这些工作负载经常需要扩缩容,以满足性能测试、集成测试和压力测试的需求,从而导致实例数量不断增加。

问题在于:按需实例的成本相当高。

  • • 实例类型m5.large和 c5.xlarge
  • • 平均实例数量:50 个按需实例(m5.large 与 c5.xlarge混合)
  • • 单个实例成本m5.large 约为 $0.096/小时,c5.xlarge 约为 $0.192/小时
  • • 每日运行时间:每天 12 小时(QA 工作负载并非 7x24 小时)
  • • 每月总成本:约 $4,500(两个实例类型合计)

这一设置虽然具备良好的稳定性,但成本较高。

通过进一步分析资源利用率,我们发现 QA 环境实际上能够容忍一定程度的中断,而不会对整体测试流程造成实质性影响。

挑战:成本与可靠性的平衡

虽然 Spot 实例相比按需实例最多可以节省约 90% 的成本,但当 AWS 需要回收容量时,只需提前2分钟通知,就可以终止这些实例。

对于生产环境而言,这种不确定性可能会带来不可接受的风险;但在 QA 环境中,只要系统能够平稳恢复,我们是可以接受一定程度的中断的。

我们的目标是将 QA 实例切换为 Spot 实例的同时,确保:

  • • 关键测试任务不中断
  • • 当 Spot 实例被回收时,系统能够平滑切换,保障测试流程连续性

解决方案:借助 Karpenter 实现对 Spot 实例的智能调度

我们选择了 Karpenter 作为解决方案。

Karpenter 是一款开源的 Kubernetes 集群自动扩缩容工具,能够根据实时的工作负载需求动态地即时调度和创建节点。

它与 AWS Spot 实例高度兼容,旨在以灵活、高性能和简洁的方式实现节点的弹性扩展,可以在 Spot 实例被终止后自动替换节点,从而确保集群的健康性和服务的连续性。

实施步骤

1. 配置 Karpenter:

  • • 设定规则优先为 QA 工作负载分配 Spot 实例
  • • 根据应用特性限制 Spot 实例类型(如 m5.largec5.xlarge

2. 中断处理机制:

  • • 在集群中配置了 AWS Node Termination Handler(提前2分钟通知中断)
  • • 当 Spot 实例被回收时,优雅排空 Pod,避免短时测试任务意外中断

3. 按需实例回退机制:

  • • 若 Spot 实例容量不足,Karpenter 自动切换至按需实例
  • • 确保关键测试阶段的高可用性

引入 Karpenter 前后对比

为了验证 Karpenter + Spot 实例方案的成效,我们对部署前后的成本进行了为期 30 天的对比分析。

引入 Karpenter 之前(全部使用按需实例):

• 每日成本:

m5.large:30 台 × $0.096/小时 × 12 小时 = $34.56/天

c5.xlarge:20 台 × $0.192/小时 × 12 小时 = $46.08/天

• 每日总计: $80.64
• 月度成本估算(按 30 天计)$80.64 × 30 = $2,419.20/月

Karpenter 实施后(Spot 实例 + 按需回退):

在切换至 Spot 实例后,我们实现了 90% 的 Spot 实例使用率,仅在 Spot 实例被 AWS 回收时才使用按需实例。


以下是优化后的成本详情:

Spot 实例:

• Spot 占比: 90%(每日约 45 台)
• Spot 单价(平均便宜约 70%):

m5.large:$0.0288/小时

c5.xlarge:$0.0576/小时

• 每日 Spot 成本:

m5.large:25 台 × $0.0288 × 12 小时 = $8.64/天

c5.xlarge:20 台 × $0.0576 × 12 小时 = $13.82/天

总计: $22.46/天

• 月度 Spot 成本: $22.46 × 30 = $673.80/月

按需实例使用情况:

  • • 占比: 10%(约 5 台/天)
  • • 每日按需成本:$8.06/天
  • • 月度按需成本:$8.06 × 30 = $241.80/月

最终月度总成本(Spot + 按需)$673.80 + $241.80 = $915.60

成果:显著降本,测试零中断

成本对比

  •  Karpenter 实施前成本:$2,419.20 / 月
  • • Karpenter 实施后成本:$915.60 / 月
  • • 成本降低幅度:约 62% 节省(每月节省 $1,503.60)

更重要的是,在整个降本过程中,我们的测试流程未受到任何中断。

得益于 Karpenter 的智能节点配备机制以及 AWS Node Termination Handler 对 Pod 优雅排空处理,即使 Spot 实例频繁被回收,我们的 QA 应用依然保持稳定运行,顺利完成了各类测试任务。

关键结论

1.💰显著降低成本:
通过在 QA 环境中大规模使用 Spot 实例,我们成功将云基础设施成本降低了 60% 以上。

2.✅业务零宕机:
结合使用 Karpenter 与 AWS Node Termination Handler,我们的系统对 Spot 实例的中断具备了良好的容错能力,保证了关键测试任务的连续性与可靠性。

3.📈弹性伸缩能力:
Karpenter 能根据工作负载的实时变化进行动态扩缩容,实现按需付费。

4.🔄自动回退策略:
当 Spot 容量不足时,系统自动回退使用按需实例,确保在关键测试阶段的高可用性与连续交付能力。


推荐阅读

Karpenter生态持续扩展:TKE Provider发布,多云支持再升级

打卡是免费的,AWS可不是:多邻国如何靠“抠”省下20%成本?

MCP Server实践,轻松搞定AWS云成本分析

项目介绍

Karpenter 于2021年11月推出并开源,是一款开源的Kubernetes集群自动扩缩容工具,专为优化 Kubernetes 集群的工作负载设计,旨在以灵活、高性能和简洁的方式实现节点的弹性扩展。今年9月已发布1.0版本。目前,Karpenter 已为全球超500家知名企业在生产环境中提供服务,包括阿迪达斯、Anthropic、Slack、Figma等。

Karpenter项目地址:
https://github.com/kubernetes-sigs/karpenter

【声明】内容源于网络
0
0
Karpenter
Karpenter is a Kubernetes Node Autoscaler built for flexibility, performance, and simplicity.
内容 0
粉丝 0
Karpenter Karpenter is a Kubernetes Node Autoscaler built for flexibility, performance, and simplicity.
总阅读0
粉丝0
内容0