利用率可以超过 100%"/>
为什么 kubelet top node 节点内存利用率可以超过 100%
链接地址:
为什么 kubelet top node 节点内存利用率可以超过 100%(CPU 也会)?很简单,因为这里的利用率是分配给 pod 和系统守护进程的资源总和除以节点可分配资源
。
·
节点使用率计算(kubectl top node)
节点使用率 = 节点已使用 / 节点可分配
节点可分配资源
root@pan:~# kubectl describe node pan | grep -i -A 5 allocatable
Allocatable:cpu: 1600mephemeral-storage: 19430032Kihugepages-2Mi: 0memory: 7421429549pods: 110
·
节点已使用资源(分配给 pod 和系统守护进程的资源总和)
##### MEMORY 字段
root@pan:~# kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
pan 148m 9% 7272Mi 102%
或者
##### memory
root@pan:~# kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes/pan
{"kind":"NodeMetrics",......"usage":{"cpu":"149193895n","memory":"7446952Ki"}}
·
节点使用率
##### 节点已使用内存(Mi)
root@pan:~# echo "7446952/1024" | bc
7272##### 节点可分配内存(Mi)
root@pan:~# echo "7421429549/1024/1024" | bc
7077##### 节点使用率
root@pan:~# expr "scale=2;7272/7077"|bc
1.02
可以看到与 kubectl top node 输出的一致(102%),这种情况下节点并不存在内存压力,并且在 kubectl describe node 输出中也可以看出能过度使用的信息,所以也不会触发驱逐:
root@pan:~# kubectl describe nodes pan
......
Allocated resources:(Total limits may be over 100 percent, i.e., overcommitted.) # 总限额可能超过100%Resource Requests Limits-------- -------- ------cpu 1200m (75%) 0 (0%)memory 410Mi (5%) 510Mi (7%)ephemeral-storage 0 (0%) 0 (0%)hugepages-2Mi 0 (0%) 0 (0%)
......
·
节点实际使用率
实际使用率 = 节点已使用 / 节点容量
节点容量
root@pan:~# kubectl describe node pan | grep -i -A 5 capacity
Capacity:cpu: 2ephemeral-storage: 19430032Kihugepages-2Mi: 0memory: 8167884Kipods: 110
·
实际使用率
##### 节点容量
root@pan:~# echo "8167884/1024" | bc
7976##### 节点已使用
root@pan:~# echo "7446952/1024" | bc
7272##### 实际使用率
root@pan:~# expr "scale=2;7272/7976"|bc
0.91
更多推荐
为什么 kubelet top node 节点内存利用率可以超过 100%
发布评论