为什么需要自动扩缩容

负载具有波动性,合理的自动扩缩容能在保障 SLO 的前提下降低成本。Kubernetes 提供 HPA(水平)与 VPA(垂直)两种机制,搭配资源 Requests/Limits 与配额可实现稳定弹性。


核心概念

  • Requests/Limits:调度与资源上限控制的基础。Requests 影响调度与 QoS,Limits 限制实际可用上限。
  • HPA:依据指标(CPU、内存、或自定义 Prometheus 指标)动态调整副本数。
  • VPA:根据历史与当前资源使用建议容器的 Requests/Limits(部分场景与 HPA 不建议同时强绑定)。

实施步骤

  1. 明确服务 SLO 与关键指标(如 p95 延迟、错误率)
  2. 暴露 Prometheus 指标并接入 Metrics Server/Adapter
  3. 设定 HPA 目标与最小/最大副本,评估扩缩容冷却时间
  4. 启用 VPA(推荐先处于 `recommendation` 模式,观察建议)
  5. 结合命名空间资源配额(ResourceQuota)防止资源挤兑

验证与观测

  • 使用负载生成器(如 k6)进行压测,观察 HPA 反应与系统稳定性
  • 监控扩容事件与 Pod 重启,检查是否因 Limits 触发 OOMKill

常见实践

  • 以 CPU 利用率驱动 HPA,配合自定义业务 QPS/延迟指标做多维评估
  • 将批处理任务与在线服务隔离命名空间,设置独立配额

注意事项

  • 过低的 Requests 导致调度不稳定;过高的 Limits 容易资源抢占
  • VPA 与 HPA 同时调优需谨慎,避免“拉扯”效应

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部