我注意到
top pods -A
命令声明的消耗资源量与 top node
命令显示的消耗资源量(旨在作为特定节点上 pod 的总和)不匹配。
具体来说,对于单个节点,我看到内存消耗大约有 1Gi 的差异,这对我来说是相当多的。 我还尝试直接从指标 API 查询结果,这证实了差异。
有谁知道为什么以及如何可能?
top node
命令是否也用于不运行资源?如果是这样,为什么?
我的集群在 Azure AKS 托管实例上运行,我在 Linux 和 Windows 节点上都看到同样的问题。
kubectl top node
:显示节点资源(CPU/内存/存储)使用情况。
基本上就是预留一部分CPU和内存资源,供kubelet、kube-proxy、容器引擎等底层节点组件使用。它会在您第一次配置节点时保留该部分,然后该节点根据需要将这些内存划分给 pod 或 k8s 资源。
您可以查看此doc以获取更多信息。
我以为我也遇到了差异,但当我意识到
kubectl top pod --all-namespaces
支持 --sum
参数后,更容易看出我只是数学不好并得到了合适的数字!
kubectl top pods --all-namespaces --sum
NAMESPACE NAME CPU(cores) MEMORY(bytes)
ambassador edge-stack-794f7bc6f9-dc9sz 19m 188Mi
ambassador edge-stack-794f7bc6f9-dnz8c 15m 231Mi
ambassador edge-stack-794f7bc6f9-ql47q 19m 224Mi
ambassador edge-stack-agent-564f89667d-mll6r 3m 34Mi
ambassador edge-stack-redis-f4d8d6b5d-ljmdw 5m 9Mi
emissary-system emissary-apiext-58565b6f5c-h2c2l 2m 27Mi
emissary-system emissary-apiext-58565b6f5c-krsdg 1m 34Mi
emissary-system emissary-apiext-58565b6f5c-ql8p8 3m 27Mi
kube-system cilium-gtf6m 21m 115Mi
kube-system cilium-operator-599bbfc6cc-cp5lr 3m 32Mi
kube-system cilium-rjfvj 16m 87Mi
kube-system coredns-575d7877bb-4pbtg 3m 27Mi
kube-system coredns-575d7877bb-sqqrg 3m 23Mi
kube-system cpc-bridge-proxy-lg7h4 1m 2Mi
kube-system cpc-bridge-proxy-zzk6d 1m 2Mi
kube-system csi-do-node-94szc 1m 22Mi
kube-system csi-do-node-kr8qm 1m 25Mi
kube-system do-node-agent-j7c74 1m 30Mi
kube-system do-node-agent-mjwrz 1m 26Mi
kube-system hubble-relay-67b5f94fb5-qfdvp 1m 16Mi
kube-system hubble-ui-79db4488b7-qddj4 0m 23Mi
kube-system konnectivity-agent-4l4xn 4m 19Mi
kube-system konnectivity-agent-qbvxt 3m 20Mi
kube-system kube-proxy-btp5p 1m 29Mi
kube-system kube-proxy-jvbll 1m 31Mi
metrics-server metrics-server-6cb95bfdb6-n4hx2 4m 20Mi
ts-ops ts-ops-backend-dep-7977cc6f9b-vmsrp 62m 168Mi
________ ________
181m 1505Mi