背景
我们维护一个高密度业务集群(1500+节点),kube-reserved 保留了 5% CPU/10% 内存,但遇到两个典型问题:
- 资源争用风暴:业务突发流量时,HPA 未触发扩缩容,导致 Pod 被驱逐(kubectl describe pod | grep -i evict)
- 预留过死:日常负载低于 30% 时,HPA 误判资源充足,拒绝扩缩容,但实际有 20% CPU/内存冗余
现象
- HPA 未触发扩缩容时,kubectl describe hpa 显示 "No available scale targets"
- kube-reserved 预留值固定后,业务 Pod 频繁触发 OOMKilled(内存不足)
- 调整预留值后,HPA 误判资源充足,拒绝扩缩容,但实际有 20% CPU/内存冗余
已尝试的排查与结果
- 静态预留值:5% CPU/10% 内存,但业务突发流量时 HPA 未触发扩缩容
- 动态预留值:尝试用
kube-reserved+system-reserved+eviction-hard配合,但需要手动调整阈值 - HPA 配置:已配置
minReplicas/maxReplicas,但未触发扩缩容 - 监控指标:已采集 CPU/内存使用率,但未与 kube-reserved 预留值联动
期望得到的答案形态
希望得到一个动态阈值计算方案设计,包含:
- 监控指标选择:哪些指标(CPU/内存/队列长度)能准确反映业务需求?
- 阈值计算公式:如何将 kube-reserved 预留值与 HPA 扩缩容阈值动态绑定?
- 自动博弈机制:如何让 HPA 在资源预留与业务需求间自动调整?
- 案例参考:是否有团队实现过类似方案?遇到哪些典型问题?
引用依据
0赞
0收藏
0评论
0浏览