在 Kubernetes 中设置 Pod 请求/限制:micrometer暴露操作指标 vs kube-state-metrics vs metrics-server

48次阅读
没有评论

问题描述

在使用 Kubernetes 时,希望了解在 micrometer 暴露操作指标、kube-state-metrics 和 metrics-server 之间存在的差异,以及如何利用 Kubernetes Mixin 来设置正确的 Pod 请求/限制。用户希望能够获得类似于通过运行 kubectl top podname --containers 命令所看到的数据,与通过 Grafana 中的 K8s -> ComputeResources -> Pods 仪表盘所看到的数据相一致。然而,不仅这三者之间的值相差很大,而且暴露的操作指标值与其他两者也存在差异。用户使用的 Kubernetes 版本为 1.14.3,操作系统为 Ubuntu 18.04 LTS,由 kubespray 进行管理。另外,用户还提到了 kube-prometheus-stack 9.4.4 和 Spring Boot 2.0 与 Micrometer 的使用。

解决方案

以下操作中可能会涉及版本差异,务必注意备份数据和配置。

使用 kube-state-metrics 与 Grafana 仪表盘

首先,用户可以考虑使用 kube-state-metrics 与 Grafana 仪表盘来获取更准确的 Pod 相关指标。kube-state-metrics 是一个用于暴露 Kubernetes 集群状态的服务,它可以提供更多有关 Pod、Node 和其他资源的指标。结合 Grafana,可以创建可视化仪表盘,用于监控和设置资源的请求和限制。

以下是一些操作步骤:

  1. 确保 kube-state-metrics 已经安装并运行。可以使用 Helm 来部署 kube-state-metrics:
    sh
    helm install kube-state-metrics stable/kube-state-metrics

  2. 在 Grafana 中创建仪表盘以监控 Pod 相关指标:

  3. 使用 Prometheus 数据源连接到 kube-state-metrics 暴露的指标。
  4. 在仪表盘中创建适当的图表,显示与 Pod 相关的 CPU、内存等指标。
  5. 可以通过选择合适的命名空间、容器等标签来过滤指标。

通过这种方式,你可以获取更详细和准确的 Pod 相关指标数据,并根据需求设置请求和限制。

比较 JVM 指标

你提到在使用 micrometer 暴露 Spring 数据时,jvm_memory_used_bytes 指标的值更接近 metrics-server。你可以进一步探究这个指标,以便更好地了解它的含义和影响。考虑以下步骤:

  1. 查阅 micrometer 和 Spring Boot 文档,了解 jvm_memory_used_bytes 指标的具体含义和计算方式。

  2. 检查 Spring Boot 应用程序的配置,确保 micrometer 正确地暴露了该指标。

  3. 确保 kube-prometheus-stack 和 Grafana 正确地收集和展示该指标。你可以在 Grafana 仪表盘中添加与 JVM 内存使用相关的图表,以便更好地监控。

关于多次结果的问题

你在评论中提到执行 container_memory_working_set_bytes 查询时,得到了4个结果,其中包括2个服务和2个 istio-proxy。这可能是由于查询条件中使用了多个容器标签,导致结果中返回了多个匹配的容器。

如果这一现象不符合预期,你可以考虑以下步骤:

  1. 仔细检查查询条件,确保标签的选择与预期相符。

  2. 查阅 kube-prometheus-stack 文档,查找是否存在已知的问题或配置选项,可能会影响查询的结果。

  3. 如果你怀疑这可能是 kube-prometheus-stack Helm 图表中的问题,你可以查看 Helm 图表的 GitHub 存储库,以查找是否有相关的问题报告或解决方案。

总结

通过使用 kube-state-metrics 与 Grafana 仪表盘,你可以获得更详细和准确的 Kubernetes 指标数据,并能够更好地设置 Pod 的请求和限制。同时,深入了解 JVM 指标和查询结果中的差异,将有助于更好地理解系统的运行状况。

请注意,以上解决方案仅供参考,具体操作可能因版本差异、配置和需求而有所不同。在进行任何更改之前,建议先备份数据和配置,以防意外情况发生。


在文章中,我们介绍了如何使用 kube-state-metrics 与 Grafana 仪表盘来获得更准确的 Kubernetes 指标数据,并探讨了 JVM 指标和查询结果差异的可能原因。这些步骤可以帮助你更好地监控和管理 Kubernetes 集群中的资源请求和限制。在实施任何更改之前,请务必注意版本兼容性和数据安全性。

请注意,本解决方案仅为指导性建议,具体操作可能因环境和需求而异。在进行任何更改之前,请确保充分了解操作的影响并进行必要的测试和备份。

正文完