实时监控容器、节点和集群



我们正在为我们的一个应用程序使用 K8s 集群,集群归其他团队所有,我们在那里没有完全控制权......我们正在尝试找出有关资源利用率(CPU 和内存)的指标,有关运行容器/Pod/节点的详细信息等。需要找出有多少并行容器正在运行。问题是他们通过普罗米修斯公开了对集群的监控,但对于普罗米修斯,我们没有获得实时数据,它没有关于运行容器的信息。

我的问题是,k8s集群中默认可用的API是什么,可以提供我们需要的所有东西。我们不想从另一个客户端(如 Prometheus 或其他任何东西)读取数据,我们希望直接从集群中读取指标,以便数据不会过时。有什么建议吗?

正如你提到的,你将需要指标服务器(或堆)来获取这些信息。 您可以确认指标服务器是否正在运行kubectl top nodes/pods,或者只需检查命名空间中是否存在堆kube-system或指标服务器 Pod。

此外,提供的命令将能够向您显示您正在寻找的信息。我不会详细介绍,因为在这里你可以找到很多查看群集资源使用情况的线索和方法。您可能也应该看看 cadvisor,它应该已经存在于集群中。它公开一个 Web UI,该 UI 导出有关计算机上所有容器的实时信息。

除此之外,可能还有其他商业方法可以实现您正在寻找的内容,例如 SignalFx 和其他类似项目 - 但这可能需要集群管理员的参与。

要在没有 Prometheus 的情况下监控 Kubernetes 内部的资源,您可以考虑两种选择:

  • 使用 kube-state-metrics 来检查 kubernetes 对象状态和配置
  • 使用 cAdvisor 进行资源消耗

在您的情况下,cAdvisor可以帮助收集这些信息。此外,cAdvisor 提供了一个 REST API,允许用户以编程方式查询和检索性能指标。这对于自定义监视和自动化特别有用。

例如,要使用 cAdvisor 的 REST API 检索特定 Pod 的 CPU 使用率指标,您需要向相应的端点发出 HTTP 请求。 若:

  • 您的 cAdvisor 实例正在运行 http://:/
  • 您感兴趣的容器的名称为 my-pod
  • 您想要检索 CPU 使用率指标 REST API: curl http://:/api/v1.3/containers/docker//stats |jq '.cpu'

如果您想考虑替代解决方案,请查看 7 大 Kubernetes 监控工具,了解 Kubernetes 中的监控工具列表。

最新更新