为什么 top node、free、Grafana 的数据对不上
内容提要
本文讨论了Kubernetes中节点资源使用率超过100%和top node与Grafana数据不一致的问题,提供了解决方案。
关键要点
-
Kubernetes中节点资源使用率超过100%是因为计算使用率时默认使用可分配资源,排除了Kubelet保留部分。
-
使用--show-capacity参数可以查看节点总的资源使用情况。
-
Allocatable等于Capacity减去Reserved和Evicted Threshold。
-
使用free命令查看节点资源使用情况与Grafana数据基本一致,因其数据源相同。
-
kubectl top命令使用metrics-server采集的指标,数据来自Kubelet。
-
top命令使用的node_memory_working_set_bytes指标与Grafana使用的node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes指标数据源不同,导致内存使用量差异。
-
Kubelet驱逐Pod时使用的指标是container_memory_working_set_bytes,代表容器真实内存使用量。
延伸问答
为什么Kubernetes中节点资源使用率会超过100%?
因为计算使用率时默认使用可分配资源,排除了Kubelet保留的部分。
如何查看Kubernetes节点的总资源使用情况?
可以使用命令kubectl top node --show-capacity来查看节点的总资源使用情况。
top命令和Grafana的数据为什么会不一致?
因为top命令使用的node_memory_working_set_bytes指标与Grafana使用的node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes指标数据源不同。
如何使用free命令查看节点资源使用情况?
使用free命令可以查看节点的内存使用情况,输出包括总内存、已用内存等信息。
Kubelet在驱逐Pod时使用哪个指标?
Kubelet使用container_memory_working_set_bytes指标来驱逐Pod。
Allocatable和Capacity的关系是什么?
Allocatable等于Capacity减去Reserved和Evicted Threshold。