Windows AKS 节点上的“kubectl top nodes”中的 MEMORY(bytes) 值是什么意思?

Windows AKS 节点上的“kubectl top nodes”中的 MEMORY(bytes) 值是什么意思?

当我kubectl top nodes在具有 Windows 节点的 Azure Kubernetes 服务群集上运行时,我得到了一个返回值MEMORY(bytes)

PS >kubectl top nodes
NAME                                CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
...
akswinxxxxxxxxx                     163m         8%     2407Mi          55%
...

这个号码 (2407英里)不是已分配返回的值kubectl describe node(转换为相同单位时)为2084英里

PS > kubectl describe node akswinxxxxxxxxx
...
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests         Limits
  --------           --------         ------
  cpu                1070m (56%)      500m (26%)
  memory             2134435Ki (48%)  2412Mi (56%)
  ephemeral-storage  0 (0%)           0 (0%)

(我在其他情况下看到了更大的差异。)

它也不同于工作集的总和(6398英里)或私人记忆(3822英里)节点上运行的进程:

PS C:\C\6428530b2b53f975bb582acc2f12458ca138075069d33d663f3b9e2ec70edbaf> (get-process |Measure-Object WorkingSet64 -Sum).Sum / 1024 / 1024
6397.7109375
PS C:\C\6428530b2b53f975bb582acc2f12458ca138075069d33d663f3b9e2ec70edbaf> (get-process |Measure-Object PrivateMemorySize64 -Sum).Sum / 1024 / 1024
3822.328125

它也不是 Pod 内存的总和,正如crictl stats(1531英里):

PS >crictl stats
CONTAINER           CPU %               MEM                 DISK                INODES
2bdfd79f404af       0.00                33.39MB             71.3MB              0
32ea5bc86bacf       0.00                34.36MB             37.75MB             0
511eb449bc0ae       0.00                37.55MB             71.3MB              0
52a1bd98c3558       3.09                222MB               147.8MB             0
6428530b2b53f       0.00                73.54MB             37.75MB             0
6bd5050e8bb4c       0.00                37.68MB             37.75MB             0
78a51582874ec       0.00                241.5MB             104.9MB             0
bb1224de3c87e       0.00                34.14MB             71.3MB              0
e19566f08ca1e       0.00                38.27MB             37.75MB             0
e633436686347       0.00                329.5MB             172MB               0
f82c4306b4692       0.00                34.79MB             37.75MB             0
fa36b455d852f       0.00                235.8MB             104.9MB             0
fe7d9f0193f17       0.00                178MB               306.2MB             0

它也不匹配节点上的“总内存减去可用物理内存”(5101米):

PS >$OS =  Get-WmiObject -Class WIN32_OperatingSystem
PS> ($OS.TotalVisibleMemorySize - $OS.FreePhysicalMemory)/1024
5101.25390625

正如Kubernetes 文档,该值用于指示节点的工作集。那么,这是什么意思,如何测量?如何使用它来监控节点的健康状况或可用资源?

(注:在互联网上,我经常找到对 Kubernetes 的指标服务器。但是,它似乎没有在我的 AKS Windows 节点上运行。)

更新 2022-12-05:我知道这个数字一般用来表示当前节点的内存使用量。但是,我真的想知道更多有关它的详细信息。由于它与 Pod 内存数字不匹配,因此它似乎包括系统进程,对吗?那么,它如何与可分配MEMORY%百分比),Pod 可用的空间是多少?为什么它与节点上直接报告的数字不匹配(见上文)?简而言之,我想知道这个数字实际上是如何计算的——在 Windows 上。

答案1

这 ”内存(字节)“ 显示的值kubectl top nodes与“ 不同已分配显示的值kubectl describe <node>。“已分配”值表示 Kubernetes 调度程序根据为节点上运行的 Pod 设置的内存请求和限制为节点分配的内存量。内存(字节)另一方面," 值表示kubectl top nodes运行命令时节点上运行的进程实际使用的内存量。

您可以使用“内存(字节)显示的“值”kubectl top nodes来监控节点的运行状况,并确保它们有足够的内存来运行其工作负载。如果该值始终接近“已分配“值,则可能表明该节点内存不足,可能需要调整大小或重新分配其资源。

相关内容