如何计算 cpu pod 在 kube 状态指标中的使用情况?
How to calculate cpu usage of pod in kube state metrics?
我使用 kubernetes api 和使用 prometheus 的 kube 状态指标远程监控 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 使用率
提前致谢。
不,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 等指标被标记为 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_metrics, pod_container_metrics.
我使用 kubernetes api 和使用 prometheus 的 kube 状态指标远程监控 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 使用率提前致谢。
不,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 等指标被标记为 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_metrics, pod_container_metrics.