# 为什么需要自动扩缩容 负载具有波动性,合理的自动扩缩容能在保障 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 同时调优需谨慎,避免“拉扯”效应

发表评论 取消回复