我运行了v1.9.2
Kubernetes的自定义设置,并使用Prometheus v2.1.0
抓取各种指标。其中,我抓取了kubelet
和cAdvisor
指标。
我想回答这个问题:" 我的部署中requests
和limits
定义的CPU资源实际上由pod(及其容器)使用了多少就(毫)核心而言?"
有很多可用的指标,但没有这样的。也许它可以通过CPU使用时间以秒计算,但我不知道如何。
我认为这是不可能的 - 直到一位朋友告诉我她在她的群集中运行Heapster,其内置的Grafana中有一个图表,告诉完全:它显示了pod(及其容器)在(milli)核心中的单独CPU使用率。
由于Heapster还使用kubelet
和cAdvisor
指标,我想知道:我怎样才能计算出相同的指标? InfluxDB中的指标名为cpu/usage_rate
,但即使使用Heapster的代码,我也无法弄清楚它们是如何计算的。
感谢任何帮助,谢谢!
答案 0 :(得分:5)
我们正在使用container_cpu_usage_seconds_total
指标来计算Pod CPU使用率。此指标包含按核心容器消耗的CPU秒总数(这很重要,因为Pod可能包含多个容器,每个容器可以跨多个核心进行调度;但是,度量标准具有我们可以用于聚合的pod_name
注释。特别感兴趣的是该指标的变化率(可以使用PromQL's rate()
function计算)。如果它在一秒钟内增加1,那么Pod在那一秒内消耗1个CPU核心(或1000毫安核心)。
以下PromQL查询就是这样:在五分钟内平均计算所有Pod的CPU使用率(使用sum(...) by (pod_name)
操作):
sum(rate(container_cpu_usage_seconds_total[5m])) by (pod_name)