资源优化
优化资源请求/限并右调服务以无失余量砍成本。
为什么
请求 4 CPU 和 2GB 内存但用 0.5 CPU 和 200MB 的服务超配 8x — 且 $50/pod/月、50 pod 年浪 $25k。右调(请求设 p95 用 + 20% 余量、限设 p99 * 2)砍浪同时保尖峰余量。陷阱是无数据右调 — 猜"可能 1 CPU"留你要么超(浪)要么欠(OOM)。用指标:过去 30 天 p95 和 p99 CPU/内存、请求设 p95 + 余量、限设 p99 * 2(或若 OOMKilled 比节流糟则移限)。这是季度练习:随代码变用漂 ,6 月前右调的服务现可能超配。季度右调的团队报无任何余量失成本降 30-50%,因他们付实际用非猜。
何时使用
所有服务季度、大代码变后、成本超预算时。
如何做
1. 按服务收 30 天用指标 - CPU 和内存用,p50/p95/p99,每 pod - 用指标服务器或监控工具(Datadog、Grafana) - 30 天捕周模式和偶发尖峰 2. 请求设 p95 用 + 余量 - requests.cpu = p95(cpu) * 1.2 (20% 余量) - requests.memory = p95(memory) * 1.3 (30% 余量;内存少突发) - 请求定调度;设太高浪集群资源 3. 慎设限(或移) - limits.cpu = p99(cpu) * 2 (允突发;CPU 节流优雅) - limits.memory = p99(memory) * 1.5 (OOMKilled 非优雅;设高或移) - 若 OOMKilled 致过事件 → 移内存限(让节点处理) 4. 右调副本和 HPA - 若 p95 CPU 是请求 10% → 超配;降请求或减副本 - 若 HPA 从不扩超 min → min 太高;降它 - 若 HPA 总在 max → max 太低;提它(或修瓶颈) 5. 右调后验 - 部新请求/限,看 1 周 - 无 OOMKilled?无 CPU 节流?延迟 SLO 内?→ 右调成 - 若问题 → 回滚并重查(你用坏数据或错余量)
示例
# 右调 checkout(30 天指标):
# CPU:p50 0.2、p95 0.5、p99 0.8 (核)
# 内存:p50 200MB、p95 400MB、p99 600MB
# 当前(超配):
resources:
requests: { cpu: "2", memory: "2Gi" } # CPU 4x 超、内存 5x
limits: { cpu: "4", memory: "4Gi" }
# 右调:
resources:
requests:
cpu: "0.6" # p95(0.5) * 1.2 = 0.6
memory: "520Mi" # p95(400) * 1.3 = 520
limits:
cpu: "1.6" # p99(0.8) * 2 = 1.6(CPU 节流优雅)
# 内存限移 — OOMKilled 比节点压力糟
# 成本省:
# 前:50 pod × 2 CPU × $50/CPU/月 = $5,000/月
# 后:50 pod × 0.6 CPU × $50/CPU/月 = $1,500/月
# 省:$3,500/月 = $42k/年(70% 降,无余量失)
# HPA 右调:
# 当前:min 10、max 50。HPA 从不超 12。
# → min 5(降基线)、max 30(降封;若撞 30 修瓶颈)
# → 多省 5 pod × 0.6 CPU × $50 = $150/月
# 验(1 周后):
# OOMKilled:0 ✅
# CPU 节流:<0.1% ✅
# p99 延迟:450ms(SLO 500ms) ✅
# → 右调成常见问题
- ⚠无数据右调 — 猜"1 CPU"留你要么超(浪)要么欠(OOM);用 30 天 p95/p99 指标。
- ⚠内存限太低 — 突发时 OOMKilled 丢在飞请求;设高或移(OOM 比节点压力糟)。
- ⚠一次右调永不重查 — 用随代码变漂;季度重右调。
- ⚠右调请求非副本 — 50 pod 每 0.6 CPU 仍 30 CPU;若 p95 0.5 你需 5 pod 非 50。
最佳实践
- ✓收 30 天每 pod p50/p95/p99 CPU 和内存;请求设 p95 + 20% 余量、限设 p99 * 2(或若 OOMKilled 险则移内存限)。
- ✓也右调副本和 HPA:若 p95 CPU 是请求 10% 则降请求或减副本;若 HPA 从不超 min 则降 min。
- ✓右调后验:看 1 周 OOMKilled、CPU 节流、SLO 破;若问题现则回滚。
- ✓季度和大代码变后重右调;用漂,6 月前右调的服务现可能超配。