kubectl top nodes vs top pods 报告的总内存使用情况

kubectl top nodes vs top pods 报告的总内存使用情况

考虑针对我的集群运行这两个命令。

首先汇总所有已知使用的 RAM,如下表所示top nodes

$ kubectl --no-headers=true top nodes | awk 'BEGIN { total=0 } { total+=$4 } END { print total, "Mi" }'
504972 Mi

然后由所有 podstop pods

phs@anvil:~$ kubectl --no-headers=true --all-namespaces=true top pods |  awk 'BEGIN { total=0 } { total+=$4 } END { print total, "Mi" }'
163503 Mi

我已经确认所有活着的豆荚都出现在 中top pods

如此巨大的差异是怎么回事?多余的内存用在哪儿了?

答案1

看来差异归结于buffers。如果我们free -mw在每个节点上运行,我可以看到那里有大量(10-15 GB)的内存被占用。

$ kubectl get nodes -o name | cut -d / -f 2 | while read node; do ssh -n admin@$node 'free -mw | fgrep Mem:'; done | awk 'BEGIN { total=0 } { total+=$6 } END { print total, "Mi" }'
278815 Mi

它们的总数大约是缺失的挂载(这些命令是在不同时间运行的,因此不应该期望完全相等。)

相关内容