欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > 为什么kubectl top命令查看节点内存使用超过100%?

为什么kubectl top命令查看节点内存使用超过100%?

2025/4/3 4:40:33 来源:https://blog.csdn.net/qq_34556414/article/details/142216108  浏览:    关键词:为什么kubectl top命令查看节点内存使用超过100%?
问题现象

从界面上看节点内存使用率并不是很高,但使用kubelet top node查看节点内存使用率已超过100%。

NAME            CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
192.168.0.243   79m          4%     2357Mi          109%
问题根因

出现该问题的原因是kubectl top node是调用kubelet的metrics API来获取数据的,因此看到的是节点上已使用的资源总和除以可分配的所有资源。

社区issue链接:kubectl shows node memory >100%? · Issue #86499 · kubernetes/kubernetes · GitHub。

场景示例

例如,某节点的参数可通过kubectl describe node命令查询,示例如下:

...
Capacity:cpu:                2ephemeral-storage:  51286496Kihugepages-1Gi:      0hugepages-2Mi:      0localssd:           0localvolume:        0memory:             3494556Kipods:               40
Allocatable:cpu:                1960mephemeral-storage:  47265634636hugepages-1Gi:      0hugepages-2Mi:      0localssd:           0localvolume:        0memory:             2213604Kipods:               40
...
  • 节点内存总量:即Capacity.memory字段,为4030180Ki。
  • 节点可分配量:即Allocatable.memory字段,为2213604Ki
  • 节点已使用量:可通过以下命令获取,本示例中为2413824Ki。
    kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes/

    回显如下:

    {"kind": "NodeMetricsList","apiVersion": "metrics.k8s.io/v1beta1","metadata": {},"items": [{..."timestamp": "2023-08-15T14:09:38Z","window": "1m0.177s","usage": {"cpu": "78528126n","memory": "2413824Ki"}}]
    }
  • 则使用kubelet top node查看节点内存使用率:

节点内存使用率 = 节点已使用量 / 节点可分配 = 2413824Ki / 2213604Ki = 109%

  • 实际节点内存使用率:

实际节点内存利用率 = 节点已使用量 / 节点内存总量 = 2413824Ki / 4030180Ki = 59.9%

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词