背景
我们管理一个 Kubernetes 集群,节点上配置了 kube-reserved 和 system-reserved 以确保系统资源的预留。然而,在某些情况下,业务 Pod 会被驱逐,怀疑是由于 kube-reserved 和 system-reserved 的配置不当导致。
现象
- 资源预留不足:节点内存总容量 64Gi,kube-reserved=memory=4Gi,system-reserved=memory=8Gi,业务 Pod 总 limit 合计 52Gi,预留仅占 12%。
- 驱逐频率高:过去 7 天内发生 17 次 kube-reserved 驱逐,其中 12 次与内存不足相关。
- 阈值不敏感:当前 eviction-hard=memory.available<100Mi,但业务 Pod 在内存使用率 85% 时已开始 OOMKilled。
已尝试的排查
- 调整 kube-reserved=memory=8Gi,system-reserved=memory=16Gi,但驱逐频率下降 30%,仍无法完全避免。
- 启用 cgroup v2 的 memory.oom_control 选项,设置 oom_score_adj=-500,但驱逐事件仍发生。
- 使用 kube-state-metrics 监控节点内存使用率,发现业务 Pod 在 85% 时开始频繁触发 OOMKilled。
期望答案形态
- 动态计算公式:基于节点内存总量、系统服务内存占用、业务 Pod 平均内存使用率,给出安全阈值计算公式(如:安全阈值 = (节点内存 - 系统预留) × (1 - 业务峰值系数))。
- 工具推荐:是否有现成的 Prometheus + Grafana 模板或 kube-batch 项目可直接集成?
- 调参建议:如何通过 kubelet 的 eviction-threshold 和 eviction-hard 参数组合实现动态调整?
0赞
0收藏
0评论
4浏览