提问者:小点点

如何计算库贝状态指标pod的cpu使用率?


我使用 kubernetes api 和 kube 状态指标使用 prometheus 远程监控 eks 集群。在 Kubernetes API 中,我们有一个指标container_cpu_usage_seconds_total它给出了 Pod 的 CPU 使用率。在 kube-state-metrics 中是否有类似的指标可以提供 CPU 使用率。实际上,我正在尝试获取与 kubernetes API 和 kube-state-metrics 完全不同的集群 cpu 使用情况,以下是计算。

kube状态度量:

< code > sum(kube _ pod _ container _ resource _ requests _ CPU _ cores)/sum(kube _ node _ status _ allocatable _ CPU _ cores)* 100 -得出101%

而kube-state-metrics给出的< code>12%在我看来是准确的。

< code>kubernetes-api:

sum(率(container_cpu_usage_seconds_total{id="/",kubernetes_io_hostname=~"^$Node$",作业=~"$作业$"}[5m])/sum(machine_cpu_cores{kubernetes_io_hostname=~"^$Node$",作业=~"$作业$"}) * 100

我不认为有任何指标在库贝-State度量提供CPU使用相比kubernetes-api

提前感谢。


共1个答案

匿名用户

不,kube_state_metric中没有针对每个容器的cpu使用情况的(一个)特定度量。

您获得的值:< code > sum(kube _ pod _ container _ resource _ requests _ CPU _ cores)/sum(kube _ node _ status _ allocatable _ CPU _ cores)* 100 = 101 可能是错误的,因为kube _ node _ status _ allocatable _ CPU _ cores和kube _ pod _ container _ resource _ requests _ CPU _ cores等指标被标记为已弃用。

同时,请注意,还有kube _ pod _ container _ resource _ limits _ CPU _ cores这样的指标。你的容器可能已经设置了资源限制,这就是为什么你的结果可能超过100 %。如果您设置了每个容器的限制,请检查资源限制是否低于资源请求,然后您的计算应如下所示:< code >[sum(kube _ pod _ container _ resource _ requests _ CPU _ cores)-sum(kube _ pod _ container _ resource _ limits _ CPU _ cores)]/sum(kube _ node _ status _ allocatable _ CPU _ cores)* 100 。

查看容器和节点kube_state_metrics中的每个资源指标:node_metrics、pod_container_metrics。