![kubernetes:测量资源/限制效率](https://linux22.com/image/730279/kubernetes%EF%BC%9A%E6%B5%8B%E9%87%8F%E8%B5%84%E6%BA%90%2F%E9%99%90%E5%88%B6%E6%95%88%E7%8E%87.png)
我想了解我的部署/作业在消耗它们所请求的资源方面的“效率”。例如,如果一个作业在峰值时只使用 1CPU,但最终请求 320 个 CPU,那么我希望有一个仪表板/警报/指标来追查符合此条件的恶意 pod。
这样的东西存在吗?我发现最接近的是 grafana + promql,但理想情况下,现成的仪表板或其他解决方案会很棒。
我正在内部部署的 kubernetes 集群上运行它。
答案1
因此,有很多方法可以解决此问题。Grafana 就是其中之一。
首先,您可以使用资源请求和/或限制。基本上,请求是为 pod 中的容器保留的内存或 CPU 量。限制显然限制了可以使用的资源量。更多信息这里。您还可以使用资源配额来限制每个命名空间的资源使用量。您可以找到更多信息这里。
这将用于控制资源,这也很重要 - 如果您想更进一步,还有集群自动缩放器。
严格来说,对于监控,您还可以使用不同的工具,正如您已经提到的,有 Grafana,但您也可以使用 EFK 堆栈。在 GKE 中,可以与 stackdriver 很好地集成以监控集群和组件,您也可以在 AWS 中实现这一点。
Kubernetes 内部还有更多工具。例如:
kubectl top pod --all-namespaces
将向您展示NAMESPACE NAME CPU(cores) MEMORY(bytes)
用法。
我也在 StackOverflow 上写过类似的话题。希望对你有帮助。你可以找到答案这里。
还有顾问:
cAdvisor 是一个开源容器资源使用和性能分析代理 [...] cAdvisor 自动发现机器中的所有容器并收集 CPU、内存、文件系统和网络使用情况统计信息。cAdvisor 还通过分析机器上的“根”容器来提供整体机器使用情况。
这里是一篇关于如何处理这个问题的有趣文章。我想再测试一件与收集这些指标有关的事情,如果我发现一些有价值的东西,我会回来的。