Windows AKS 節點上的「kubectl 頂層節點」中的 MEMORY(bytes) 值代表什麼?

Windows AKS 節點上的「kubectl 頂層節點」中的 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 的參考指標伺服器。但是,它似乎沒有在我的 AKS Windows 節點上運行。

2022年12月5日更新:我知道該數字通常表示當前正在使用節點的記憶體量。不過,我真的很想了解更多細節。由於它與 Pod 記憶體編號不匹配,它似乎包括系統進程,對吧?那麼,如何比較可分配MEMORY%百分比),Pod 可用的是什麼?為什麼它與節點上直接報告的數字不符(見上文)?簡而言之,我想知道這個數字是如何在 Windows 上實際計算的。

答案1

這 ”記憶體(位元組)" 顯示的值kubectl top nodes與 " 不同已分配” 值顯示kubectl describe <node>。“已分配”值表示 Kubernetes 調度程序根據為節點上運行的 Pod 設定的內存請求和限制分配給節點的內存量。“記憶體(位元組)另一方面,「值表示命令kubectl top nodes運行時節點上運行的進程正在使用的實際記憶體量。

您可以使用“記憶體(位元組)“ 顯示的值用於kubectl top nodes監視節點的運行狀況並確保它們有足夠的記憶體可用於運行其工作負載。如果該值始終接近“已分配”值,它可能表明節點記憶體不足,可能需要調整大小或重新分配其資源。

相關內容