在“已满”但未充分利用的 Kubernetes 集群中查找浪费或过度配置的 Pod

在“已满”但未充分利用的 Kubernetes 集群中查找浪费或过度配置的 Pod

我在一个 Kubernetes 集群上工作,目前,大约 95% 的 CPU 和 90% 的内存已分配给 pod。但是,根据 Kubernetes 仪表板,集群上的整体瞬时 CPU 负载仅占集群中核心总数的 5% 左右,总使用内存仅占集群中总内存的 33% 左右。因此显然有些甚至可能是大多数集群上运行的 pod 严重过度配置;大多数请求的 CPU 和内存实际上在任何给定时间都没有被使用。

我如何知道哪个pod 最应该为此负责吗?仪表板将显示每个节点的资源分配情况,以及每个正在运行的 pod 中实际使用的资源情况。但要查看 pod 的请求,我必须这样做kubectl describe;我无法在仪表板的任何地方找到这些请求。此外,当 pod 完成并清理后,它就会消失,我不知道如何提出类似以下问题“这个已完成的 pod 在峰值时使用了请求内存的多少部分?”, 或者“这个 pod 在其生命周期内请求了多少个核心小时但未使用?”

有哪些工具可以查找和诊断 Kubernetes 集群中浪费的、已请求但未使用的资源?应该采用哪些最佳实践来根据工作负载正确调整 Pod 的大小?我认为我们之所以陷入这种情况,是因为让所有用户都将其资源请求翻倍,直到他们的 Pod 不再被驱逐。

答案1

这可以通过以下方式实现垂直 Pod 自动扩缩器(越南航空管理局)

即使你正在奔跑羟脯氨酸您可以启用推荐模式,它将计算 pod 的推荐资源需求,而不会自动更改任何内容。

安装系统已准备好为您的 Pod 推荐和设置资源请求。要使用它,您需要插入一个垂直 Pod 自动扩缩器您希望自动计算资源需求的每个控制器的资源。这通常是部署. 有三种模式虚拟个人助理操作:

...

"Off":VPA 不会自动更改 Pod 的资源需求。建议已计算,可在 VPA 对象中检查。

实现此目的的其他方法可以是格拉法纳

对于 GCP 上的 GKE 集群,指标探索器

希望能帮助到你。

相关内容