大数跨境

真实事故复盘:HPA配置失误如何让集群一夜损失400万元

真实事故复盘:HPA配置失误如何让集群一夜损失400万元 云妙算
2025-09-02
1
导读:血泪经验😭

点击上方卡片,关注「CloudPilot AI」

回复关键词【案例】

查看多邻国、Figma等名企的云端降本实践


本文是一个真实的案例:一次自动扩缩容配置失误导致云账单飙升,本应平静的夜晚变成了一场“平地惊雷”。

原文链接:

https://aws.plainenglish.io/one-hpa-misconfig-cost-us-500k-overnight-31aa9dd2d29e


我们正在用 Kubernetes 和 HPA 上线一个新的机器学习推理引擎,指标已经接好,配置看起来也没问题,Slack频道也十分安静。看起来一切正常。


凌晨 2:03,PagerDuty 警报响起,手机炸了,监控面板的曲线像 2020 年的股票行情一样疯狂飙升。


到天亮时:

  • 超过 1200 个节点在运行

  • 云成本飙升至每小时 1 万美元

  • ML 推理服务停摆


工程师们慌乱地挤在 Zoom 紧急会议室讨论对策。CTO 甚至怀疑:“我们是不是遭到 DDoS 攻击?” 答案是:没有。这一切都是我们自己造成的。


01/

第一章:我们是如何搞砸的?


过于自信的 HPA 配置


apiVersion: autoscaling/v2kind: HorizontalPodAutoscalerspec:  minReplicas: 2  maxReplicas: 1000  # “Just to be safe” 🙃  metrics:    - type: External      external:        metric:          name: requests_per_second        target:          type: AverageValue          averageValue: 100


来看看这个配置存在的问题:


HPA 配置问题

  • 最大副本数 maxReplicas 临时设为 1000,但未清理

  • 外部指标 requests_per_second 数据异常,Prometheus 抓取错误导致指标被放大 100 倍


成本监控不足

  • 账单报警设置过高(每天 5 万美元),无法及时发现异常


集群扩缩容限制缺失

  • Terraform 配置未限制节点上限

  • HPA 信任错误指标,导致节点无限扩容


02/

第2章:多米诺骨牌效应


  • 凌晨 12:45:指标故障触发 HPA 过度扩缩容

  • 凌晨 1:30:节点达到 200 个,无警报,团队睡眠中

  • 凌晨 3:00:云厂商开始限流,一些节点失败

  • 凌晨 5:15:客户报告推理端点 504 错误

  • 早上 6:00:成本烧掉超过 17 万美元,Slack 消息全程大写尖叫


03/

第3章:应急措施


第一步,止住烧钱。


kubectl patch hpa/ml-inference -p '{"spec":{"maxReplicas"10}}'


第二步,停止扩容并锁定 API 变更。


kubectl scale deployment ml-inference --replicas=2  kubectl cordon node <name> && kubectl drain <name>


第三步,查找根本原因

  • Prometheus 抓取错误指标,HPA 全盘信任

  • Terraform 配置中无节点上限

  • 缺乏对凌晨两点集群失控的预判


04/

事后复盘


  • 云成本损失超过 50 万美元(预付费额度,无法退款)

  • ML 推理服务停摆 12 小时

  • 基础设施团队紧急响应、暂停其他工作

  • 成立了 HPA 审查委员会(这是真的,不是玩梗!)


05/

5大改进措施


1、落地 HPA 治理


  • 最大副本数 maxReplicas 限制在 100,必要时需安全权限覆盖

  • HPA 配置通过 CI 校验才能合入


2、自定义指标必须经过验证


每个 HPA 配置必须至少包含一个可信的资源指标(如 CPU 或内存利用率),不能仅依赖外部指标。


metrics:  - type: Resource    resource:      name: cpu      target:        type: Utilization        averageUtilization: 70


3、扩缩容“空气阀门”


我们增加了逻辑,当出现以下情况时,扩缩容会自动停止:


  • 成本超过每小时 2 千美元

  • 30 分钟内节点扩增超过 50 个

  • 时间在晚上 10 点到早上 6 点(也就是“睡眠模式”)


4、成本监控优化


  • 每花 1 千美元就触发 Slack 警报

  • Grafana 仪表盘实时追踪每个服务的花费

  • Terraform 现在会在每次 apply 时显示成本预估


infracost breakdown --path=./k8s/hpa.yaml


5、自动扩缩容的混沌演练


  • 每月演练:向测试集群注入“垃圾指标”,模拟异常情况

  • 工程师比拼谁能最快发现并修复扩缩容问题

  • 胜者喝啤酒,失败者……面对财务问责


06/

排查命令示例


# 查找可疑的 HPA 最大副本数kubectl get hpa -A -o yaml | grep maxReplicas# 列出没有 owner reference 的节点kubectl get nodes -o json | jq '.items[] | select(.metadata.ownerReferences == null) | .metadata.name'# 识别依赖错误外部指标的 Podkubectl describe hpa | grep External


07/

结  论


自动扩缩容确实强大,但没有控制机制,就是在走向破产。


CloudPilot AI,作为你的 SRE Agent,让情况完全不同:

  • 智能判断扩缩容时机

  • 高级 binpack 算法和 workload rightsize,大幅提升资源利用率,降低高达 80% 集群成本

  • 节点逐步迁移和负载均衡分布,提升集群稳定性,保障业务不中断


通过 CloudPilot AI,弹性扩缩容从风险变成了可靠助力,帮助团队从琐碎的配置中解放出来,专注于业务逻辑的实现和创新。


欢迎注册试用:www.cloudpilot.ai


推荐阅读

资料下载|「偷懒也是生产力!算力优化与平台自动化实战」

全新CloudPilot AI:嵌入Kubernetes的SRE Agent,降本与韧性双提升!

AWS 优惠全用上,为什么成本还是降不下来?

公司介绍

CloudPilot AI,Your SRE Agent。致力于通过智能化、自动化的云资源调度和编排技术,数分钟即可降低 80% Kubernetes 成本。实现云基础设施的预测性优化与稳定性保障,帮助企业最大程度减少资源浪费。


我们秉持“让客户在云中花费的每一分钱都物超所值”的使命,已为数百家全球顶尖科技公司提供服务,累计为客户节省超过千万美金,平均节省67%。


目前,开源K8s弹性伸缩器 Karpenter 已为全球超500家知名企业在生产环境中提供服务,包括阿迪达斯、Anthropic、Slack、Figma等。选择CloudPilot AI,让每一笔支出都更智慧。


免费试用,2步5分钟,降低50%云成本:

cloudpilot.ai

【声明】内容源于网络
0
0
云妙算
让您在云中花费的每一分钱都物超所值
内容 0
粉丝 0
云妙算 让您在云中花费的每一分钱都物超所值
总阅读0
粉丝0
内容0