Как рассчитать использование процессора в метриках состояния кубе?
Я наблюдаю за кластером eks, используя и API-интерфейсы Kubernetes, и показатели состояния Kube, дистанционно с помощью Prometheus. в API Kubernetes у нас есть метрики container_cpu_usage_seconds_total
который дает процессор использования стручка. Есть ли аналогичные метрики в kube-state-metrics, которые могут дать использование ЦП. На самом деле я пытаюсь получить использование процессора кластера, которое полностью отличается от kubernetes api и kube-state-metrics. Ниже приведены расчеты.
kube-state-metrics:
sum(kube_pod_container_resource_requests_cpu_cores) / sum(kube_node_status_allocatable_cpu_cores) * 100
- это дает 101%
в то время как метрика состояния куба дает 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
Заранее спасибо.
1 ответ
Нет, в kube_state_metric нет (одной) конкретной метрики для использования процессора на контейнер .
Значение, которое вы получили: 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%. Если вы установили лимит для каждого контейнера, проверьте, не превышает ли лимит ресурса этот запрос ресурсов, и тогда ваш расчет должен выглядеть следующим образом: [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.