
У меня есть контейнер-коляска со следующими ресурсами:
resources:
limits:
memory: 512Mi
requests:
memory: 64Mi
Однако, когда я запускаю top
, я вижу это:
- Посланник и пилот-агент, похоже, используют ~ 363 МБ и 61 МБ соответственно.
- использованная память вверху 54,6 МБ
- запуск
free -m
дает следующее; на первый взгляд некоррелированный ответ
$ free -m
total used free shared buff/cache available
Mem: 385307 47140 315018 292 23148 336021
Swap: 0 0 0
Что именно здесь происходит и сколько памяти потребляют эти процессы?
решение1
Этот бесплатный и самый популярный вывод показывает, что используется около 50 000 МБ из общего объема памяти хоста около 385 000 МБ.
Контейнеры разделяют ядро, поэтому метрики хоста обычно показывают числа по всему узлу. Хотя пространства имен показывают только ваши процессы и файлы. Это отличается от выделенной виртуальной машины или физического хоста, где операционная система существует только для поддержки вашего приложения.
Для номеров контейнеров требуется запрос номеров cgroups. Посмотрите несколько способов сделать это на Stack Overflow:Проверка ЦП и памяти модуля Kubernetes. Многие из них требуют сервера метрик.
Остерегайтесь суммировать RESident-память процессов и ожидать, что это будет точным использованием памяти системой. Это не включает в себя общую память или кэши. И ядро делает странные трюки с учетом памяти. Ваши 3 значащие цифры — это правильная идея. Хотя в простом случае небольшого количества процессов, использующих в основном частную память, это хорошая оценка.