При запуске 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
для мониторинга работоспособности ваших узлов и обеспечения достаточности памяти для выполнения их рабочих нагрузок. Если значение постоянно близко к "Выделено" значение, это может означать, что узлу не хватает памяти и, возможно, необходимо изменить его размер или перераспределить его ресурсы.