有没有办法获取 Kubernetes 上每个命名空间的内存消耗?
在高层次上,我们可以从 kubectl 获取这个
$ kubectl 描述资源配额 -n 我的命名空间
Name: compute-resources
Namespace: default
Resource Used Hard
-------- ---- ----
limits.cpu 12 48
limits.memory 1024M 120Gi
requests.cpu 250m 24
requests.memory 512M 60Gi
注意:仅当您创建资源配额时才有效。
可以像这样创建资源配额对象:
apiVersion: v1
kind: ResourceQuota
metadata:
name: mem-cpu-demo
spec:
hard:
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi
但是,要检查 Pod 消耗量,有一些先决条件:
Pod 示例模板
apiVersion: v1
kind: Pod
metadata:
name: quota-mem-cpu-demo
spec:
containers:
- name: quota-mem-cpu-demo-ctr
image: nginx
resources:
limits:
memory: "800Mi"
cpu: "800m"
requests:
memory: "600Mi"
cpu: "400m"
要检查资源消耗,请使用以下命令:
kubectl --context <cluster_context> describe resourcequota -n my-namespace
来源: https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/
无需
ResourceQuota
即可获得此指标。然而,它不是由临时 kubectl
命令提供的。我们需要自己计算总和。
这是获取给定命名空间的总 CPU 和 RAM 使用情况的单行代码:
"kubectl top pods -n <namespace> | awk 'BEGIN {mem=0; cpu=0} {mem += int($3); cpu += int($2);} END {print ""Mem
ory: "" mem ""Mi"" ""\n"" ""Cpu: "" cpu ""m""}'"
输出示例:
Memory: 717Mi
Cpu: 257m