如何在kube状态指标中计算pod的cpu使用率?

问题描述 投票:0回答:1

我使用 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-state-metrics:

sum(kube_pod_container_resource_requests_cpu_cores) / sum(kube_node_status_allocatable_cpu_cores) * 100
- 这给出了 101%

而 kube-state-metrics 给出了

12%
,对我来说看起来很准确。

kubernetes-api:

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

我认为 kube-state-metric 中没有任何指标可以提供与 kubernetes-api 相比的 CPU 使用情况

提前致谢。

kubernetes monitoring prometheus kube-state-metrics
1个回答
6
投票

不,kube_state_metric 中没有针对每个容器的 CPU 使用情况的(一个)特定指标。

您获得的价值:

 sum(kube_pod_container_resource_requests_cpu_cores) / sum(kube_node_status_allocatable_cpu_cores) * 100 = 101
可能是错误的,因为像kube_node_status_allocatable_cpu_coreskube_pod_container_resource_requests_cpu_cores这样的指标被标记为DEPRECATED

同时,请注意有像kube_pod_container_resource_limits_cpu_cores这样的指标。 您的容器可能设置了资源限制,这就是为什么您的结果可能超过100%。如果您为每个容器设置了限制,请检查资源限制是否低于资源请求,然后您的计算应如下所示:

 [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_metricspod_container_metrics

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.