我尝试通过metrics-server API
获取k8s群集节点的CPU /内存使用率,但是我发现metrics-server
的返回值低于实际使用的CPU /内存。
kubectl top命令的输出:kubectl top nodes
以下是 free 命令的输出,从中您可以看到内存使用率超过90%。
为什么差异如此之大?
答案 0 :(得分:1)
kubectl top nodes
反映了您的Kubernetes节点的实际使用情况。
例如:
您的节点具有 60GB 的内存,而您实际使用的是 30GB ,因此将占使用量的50%。
但是您可以请求例如:
100 MB ,并具有限制 200MB 。
这并不意味着您只消耗0.16%(100/60000)的内存,而是您的配置量。
答案 1 :(得分:0)
我知道这是一个老话题,但我认为问题仍然存在。
简单来说,kubectl top
命令仅显示实际资源使用情况,与清单中的请求/限制配置无关。
例如:
您可以获得特定节点的 400m:1Gi(cpu/内存)使用率,而总请求/限制为 1.5:4Gi(cpu/内存)。
您将观察到足够的可用资源来安排,但实际上它不起作用。
请求/限制直接影响节点资源(资源预留),但这并不意味着它们被完全使用(kubectl top nodes
显示的内容)。