监视Kubernetes节点上的pod资源使用情况

肯特

用例/问题

我负责维护一个有40个节点(分为2个区域)的kubernetes集群。在这个集群中,我们大约有100种微服务和平台之类的东西,例如Kafka经纪人。所有微服务都定义了资源请求和限制。但是,它们大多数都是易爆的,并且没有保证的RAM。在我们的集群中部署其服务的开发人员定义的限制远大于请求(请参见下面的示例),最终导致在各个节点上驱逐了很多Pod。但是,我们仍然希望在服务中使用易爆资源,因为我们可以使用易爆资源节省资金。因此,我需要更好地监视每个节点上运行的所有Pod的可能性,其中包含以下信息:

  • 节点名称和CPU / RAM容量
  • 所有广告连播名称加
    • pod的资源请求和限制
    • pod当前的cpu和ram使用情况

这样,我可以轻松地识别出两种有问题的服务:

案例A:微服务设置了巨大的资源限制,因为开发人员只是在测试东西或太懒而无法对他的服务进行基准测试/监控

resources:
  requests:
    cpu: 100m
    ram: 500Mi
  limits:
    cpu: 6
    ram: 20Gi

情况B:同一节点上的太多服务设置了不准确的资源限制(例如500Mi,但是该服务始终使用1.5Gi RAM)。这种情况发生在我们身上,因为Java开发人员没有注意到Java垃圾收集器仅在使用了75%的可用RAM时才开始清理。

我的问题:

我如何才能适当地对此进行监视,从而识别配置错误的微服务,以防止此类迁出问题?在较小的规模上,我可以简单地运行kubectl describe nodeskubectl top pods手动解决它,但是在这种规模上,它不再起作用。

注意:我找不到解决此问题的任何现有解决方案(包括使用kube度量和类似指标的prometheus + grafana板)。我以为有可能,但是在Grafana中可视化这些东西真的很难。

肯特

为此,我最终编写了自己的普罗米修斯出口商。虽然节点导出器提供了使用情况统计信息,并且kube状态度量标准公开了有关您的kubernetes资源对象的度量标准,但要合并和聚合这些度量标准并不容易,以便它们提供有价值的信息来解决所描述的用例。

使用Kube Eagle(https://github.com/google-cloud-tools/kube-eagle/),您可以轻松创建这样的仪表板(https://grafana.com/dashboards/9871):

用于Kubernetes资源监控的Grafana仪表板

我还写了一篇有关这是如何帮助我节省大量硬件资源的文章:https : //medium.com/@martin.schneppenheim/utilizing-and-monitoring-kubernetes-cluster-resources-more-effectively-using-this -tool-df4c68ec2053

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Go客户端获取Kubernetes中Pod的当前资源使用情况

kubernates 中的 Pod 和节点 Cpu 使用情况

我需要使用kubernetes python客户端获取Kubernetes集群中Pod的资源使用情况

如何在Mac上跟踪资源使用情况?

如何监视内存使用情况?

Gnome资源监视器报告的C ++程序中的内存使用情况:混淆

Kubernetes:比较Prometheus / PromQL中Pod的RSS内存使用情况和Pod内存需求

如何监视kubernetes持久性卷声明,即磁盘使用情况

如何获得k8s中Pod的实时资源使用情况?

如何监视本地网络上所有设备的带宽使用情况?

监视网络上每台计算机的带宽使用情况

如何通过API获取Kubernetes资源信息(总体CPU和内存使用情况)

如何通过kubernetes go-client获取pods资源使用情况?

chromedp上的网络使用情况

在Linux中监视程序的内存使用情况

监视JVM的非堆内存使用情况

如何监视Java内存使用情况?

如何监视单个进程的CPU /内存使用情况?

如何监视Node.js的内存使用情况?

监视磁盘使用情况变化以推断下载速度

iPhone数据使用情况跟踪/监视

监视Java内部对象和内存使用情况

如何监视网络中的Internet使用情况?

监视CPU和内存使用情况的程序

在Windows XP上分析和跟踪资源使用情况的工具

如何随着时间的推移跟踪Ubuntu上的资源使用情况?

Prometheus监视Kubernetes容器内存使用情况并报告容器使用率是否超过90%

Docker-compose:显示容器资源使用情况

前端中的Web API资源使用情况