我使用kubernetes API和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
与kubernetes-api相比,我认为kube-state-metric中没有任何指标可以提供cpu使用率
谢谢。
答案 0 :(得分:1)
在 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_cores 和 kube_pod_container_resource_requests_cpu_cores 之类的指标被标记为 DEPRECIATED 。
同时请注意,有一个指标,例如 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_metrics,pod_container_metrics。