Kubernetes 使用prometheus统计k8s群集cpu/内存使用情况

Kubernetes 使用prometheus统计k8s群集cpu/内存使用情况,kubernetes,grafana,prometheus,Kubernetes,Grafana,Prometheus,我想用prometheus计算k8s集群cpu/内存的使用情况(而不是k8s pod的使用情况),这样我就可以在grafana中显示 我使用sum(container\u memory\u usage\u bytes{id=“/”})获得k8s集群使用的内存,并使用topk(1,sum(kube\u node\u status\u capacity\u memory\u bytes)by(instance))获得整个k8s集群内存,但它们不能分割,因为topk函数不返回值,而是返回向量 我如何做

我想用prometheus计算k8s集群cpu/内存的使用情况(而不是k8s pod的使用情况),这样我就可以在grafana中显示

我使用
sum(container\u memory\u usage\u bytes{id=“/”})
获得k8s集群使用的内存,并使用
topk(1,sum(kube\u node\u status\u capacity\u memory\u bytes)by(instance))
获得整个k8s集群内存,但它们不能分割,因为
topk
函数不返回值,而是返回向量


我如何做到这一点?

我已经通过gcloud默认应用程序在谷歌云上安装了普罗米修斯。仪表板在安装时自动部署。以下查询是群集的内存和CPU使用情况:

按命名空间列出的CPU使用率:

sum(irate(container_cpu_usage_seconds_total[1m])) by (namespace)
sum(container_memory_rss) by (namespace)
按命名空间列出的内存使用率(无缓存):

sum(irate(container_cpu_usage_seconds_total[1m])) by (namespace)
sum(container_memory_rss) by (namespace)
CPU请求承诺:

sum(kube_pod_container_resource_requests_cpu_cores) / sum(node:node_num_cpu:sum)
sum(kube_pod_container_resource_requests_memory_bytes) / sum(node_memory_MemTotal)
内存请求承诺:

sum(kube_pod_container_resource_requests_cpu_cores) / sum(node:node_num_cpu:sum)
sum(kube_pod_container_resource_requests_memory_bytes) / sum(node_memory_MemTotal)

我的主要问题是
topk(1,sum(kube\u node\u status\u capacity\u memory\u bytes)by(instance))
不能返回值,但现在我发现使用
sum()
来转换它可以工作,整个查询如下:

sum(sum (container_memory_usage_bytes{id="/"})by (instance))/sum(topk(1, sum(kube_node_status_capacity_memory_bytes) by (instance)))*100

我不能使用
node\u memory\u MemTotal
因为1)我有一些节点,一些在k8s集群中,一些没有,所以我不能使用2)它仍然没有k8s集群使用,这意味着主机级别的totaluse
sum(平均(kube\u node\u status\u allocable\u memory\u bytes)by(node))
可以更好地获得k8s使用的整个内存资源。