如何从k8s中的边车容器中测量“主”容器的CPU /内存使用情况?

时间:2019-01-30 15:44:42

标签: docker kubernetes metrics google-kubernetes-engine

我想部署一个Sidecar容器,该容器用于测量Pod中主容器的内存使用情况(以及可能的CPU使用情况),然后将该数据发送到端点。

我当时在看cAdvisor,但是Google Kubernetes Engine硬编码了10s的测量间隔,我需要1s的粒度。可以选择部署另一个cAdvisor,但是我只需要将这些指标用于一个pod子集,因此会很浪费。

是否可以编写一个监控主要容器指标的Sidecar容器?如果是这样,Sidecar可以使用哪些工具来收集数据?

4 个答案:

答案 0 :(得分:1)

一秒的粒度可能将成为许多监视工具的主要表现。从理论上讲,您可以自己编写脚本。您可以使用Docker stats API并仅读取主pod的统计信息流。您将需要将/var/run/docker.sock挂载到sidecar容器中。卷毛示例:

curl -N --unix-socket /var/run/docker.sock http:/containers/<container-id>/stats

另一个选择是从cgroup中读取指标。但是在这种情况下,您将需要更多的计算。需要将副驾驶室安装到小车集装箱上。查看https://docs.docker.com/config/containers/runmetrics/

上cgroup伪文件的一些示例

答案 1 :(得分:0)

sharing the process namespace可以为Pod完成此操作。然后,sidecar容器将能够从主容器中查看进程(例如,通过ps),并能够使用标准的unix工具监视CPU /内存使用情况。

一个工具可以是node-exporter,并且启用了processes收集器。然后可以由Prometheus监视

答案 2 :(得分:0)

您可以将Prometheus和Grafana用于内存和cpu的使用以及监视。这些是开源工具,也可以在生产环境中使用。

答案 3 :(得分:0)

请参见topz,这是一个简单的实用程序,可将顶部命令作为Web界面公开。