Что означает значение MEMORY(байт) в «kubectl top nodes» на узлах Windows AKS?

Что означает значение MEMORY(байт) в «kubectl top nodes» на узлах Windows AKS?

При запуске kubectl top nodesкластера Azure Kubernetes Services с узлами Windows я получаю следующее значение 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%процент), который доступен для Pods? И почему он не совпадает с числами, сообщаемыми непосредственно на узле (см. выше)? Короче говоря, я хотел бы знать, как на самом деле рассчитывается это число - в Windows.

решение1

"ПАМЯТЬ (байт)" значение, показанное kubectl top nodesне совпадает с "Выделено" значение, которое отображается kubectl describe <node>. Значение "Выделено" указывает объем памяти, выделенной узлу планировщиком Kubernetes на основе запросов памяти и ограничений, установленных для модулей, работающих на узле. Значение "ПАМЯТЬ (байт)" value, с другой стороны, указывает фактический объем памяти, который используется процессами, запущенными на узле, во время kubectl top nodesвыполнения команды.

Вы можете использовать "ПАМЯТЬ (байт)" значение, отображаемое kubectl top nodesдля мониторинга работоспособности ваших узлов и обеспечения достаточности памяти для выполнения их рабочих нагрузок. Если значение постоянно близко к "Выделено" значение, это может означать, что узлу не хватает памяти и, возможно, необходимо изменить его размер или перераспределить его ресурсы.

Связанный контент