首页 > 解决方案 > 如何获取一堆短期 Kubernetes 作业的指标

问题描述

我有一个案例,即短期(从几秒钟到 1-2 分钟)k8s 作业将根据用户请求创建。我正在尝试检索作业运行时指标(如 cpu 和内存使用情况)。

我想过(并尝试过)的方法包括:

  1. Prometheus 查询,类似container_cpu_usage_seconds_total,但基于拉取的 scape 意味着许多短命的工作不会被包括在内
  2. Pushgateway,但正如 prometheus 所建议的那样,...... Pushgateway 的有效用例是用于捕获服务级批处理作业的结果,所以我怀疑这不是合适的情况。
  3. Metric-server,但 metric-server 仅在短期作业 pod 上返回 404,导致比 Prometheus 更差的结果。
  4. 直接查询/api/v1/nodes/{nodeName}/proxy/metrics/cadvisor。虽然几乎是实时的,但它会返回所有容器,所以我必须手动解析结果并找到我需要的东西。

我正在考虑在作业工作者容器旁边使用轻量级监视器容器来检索工作者的指标。但我不知道这是否是一个好主意,即使是这样,如何检索工人的指标。

所以我的问题是:

您推荐什么方法来检索大量短期作业的 cpu 和 memory 使用情况?

标签: kuberneteskubeletcadvisor

解决方案


正如您所写,您使用了 prometheus、pushgateways、metrics-server ns query /api/v1/nodes/{nodeName}/proxy/metrics/cadvisor 如果它们不能满足您足够的新方法,我建议使用集群的监控和指标保存性能是石蕊。

Prometheus 是大多数工程师可能使用的最常见和最复杂的工具,但 Litmus 是一种专注于工作负载测试的新工具,可以保存指标,您可以根据需要存储它们。

您可以在此处找到更多信息:石蕊

有用的文章:litmus-openebs,这描述了不要获取指标,而不仅仅是内存使用情况。

然后你可以在 egg 中生成图表。gnuplot。


推荐阅读