Kubernetes 我如何获得一个pod';库伯内特斯的普罗米修斯的s(毫)核CPU使用率?

Kubernetes 我如何获得一个pod';库伯内特斯的普罗米修斯的s(毫)核CPU使用率?,kubernetes,prometheus,Kubernetes,Prometheus,我运行了Kubernetes的v1.9.2自定义设置,并使用Prometheusv2.1.0获取了各种指标。除此之外,我还搜集了kubelet和cAdvisor指标 我想回答这个问题:“在我的部署中,请求和限制定义的CPU资源中,有多少是pod(及其容器)以(毫)核的形式实际使用的?” 有很多粗略的指标可用,但没有这样的。也许可以用CPU使用时间(以秒为单位)来计算,但我不知道如何计算 我一直认为这是不可能的——直到一位朋友告诉我她在她的集群中运行Heapster,该集群在内置Grafana中有

我运行了Kubernetes的
v1.9.2
自定义设置,并使用Prometheus
v2.1.0
获取了各种指标。除此之外,我还搜集了
kubelet
cAdvisor
指标

我想回答这个问题:“在我的部署中,
请求
限制
定义的CPU资源中,有多少是pod(及其容器)以(毫)核的形式实际使用的?”

有很多粗略的指标可用,但没有这样的。也许可以用CPU使用时间(以秒为单位)来计算,但我不知道如何计算

我一直认为这是不可能的——直到一位朋友告诉我她在她的集群中运行Heapster,该集群在内置Grafana中有一个图形,它准确地告诉我:它显示了一个pod的独立CPU使用情况及其(毫)核中的容器

由于Heapster也使用
kubelet
cAdvisor
指标,我想知道:如何计算相同的指标?InfluxDB中的度量名为
cpu/usage\u rate
,但即使使用Heapster的代码,我也无法理解他们是如何计算的


感谢您的帮助,谢谢

我们使用
container\u cpu\u usage\u seconds\u total
度量来计算Pod cpu的使用率。此指标包含每个核心的容器所消耗的CPU秒总数(这一点很重要,因为一个Pod可能由多个容器组成,每个容器都可以跨多个核心进行调度;但是,该指标有一个
Pod\u name
注释,我们可以用于聚合)。特别令人感兴趣的是该指标的变化率(可通过计算得出)。如果在一秒钟内增加1,Pod将在该秒钟内消耗1个CPU内核(或1000毫内核)

下面的PromQL查询就是这样做的:计算所有pod(使用该操作)在五分钟平均时间内的CPU使用率:

sum(rate(container_cpu_usage_seconds_total[5m])) by (pod_name)

对不起,我可能会误解你的意思。因此,在启动查询后,我得到一个类似于1.475789982177767的值。你说这相当于约1470毫磁芯。是否有一些资源可以让我检查,以帮助我理解这种关系?基本上,内核和毫内核只是CPU利用率的抽象。CPU消耗为“1核”(~1000毫核)意味着Pod 100%使用一个CPU核(500毫核意味着50%,依此类推);CPU限制的作用是相同的:例如,250毫内核的限制意味着Pod可以利用一个CPU内核不超过25%。查看更多信息。我看不出容器\u cpu\u使用率\u秒数\u总计(应给出cpu使用的秒数)如何表示问题要求的cpu利用率(以毫秒为单位)。如果我有容器(cpu)(usage)(seconds)(total)等于100ms(毫秒),那么如何计算出有多少个毫内核呢?@VentzyKunev 100ms的cpu总使用量本身并没有特别的意义。如果你知道你的Pod每秒使用100毫秒的CPU时间,它确实会变得很有用——这正是普罗米修斯的
速率
函数所做的。剩下的只是不同单位之间的转换。每1000毫秒实时使用100毫秒的CPU时间对应于10%的CPU使用率(在这一秒钟内)——或者,1/10 CPU核心(或100毫核心)。@今天,根据您希望查询回答的问题,您可以同时执行这两种操作。在计算平均值时,您将得到Pod每秒每核的平均利用率(这是一个值得商榷的有用信息,因为了解您的核数对于解释此值很重要--一个核上的“.5”的平均利用率与64个核上的“.5”大不相同)。使用
sum
,您将获得每秒所有内核的Pod总利用率(如果一个内核利用率为50%,两个内核利用率为25%,则值为“.5”;如果64个内核利用率为50%,则值为“32”)。希望有帮助!