Pod перезапускается быстрее каждый раз - PullRequest
0 голосов
/ 15 мая 2019

У меня есть модуль, который запускает службу весенней загрузки java, которая интенсивно использует диск и в конечном итоге получает OOMkilled из-за увеличения объема памяти ядра (предположим, что это inode и page cash) до достижения предела (3Gb). Это займет примерно 2 дня. Это отдельная проблема, которую мы исследуем Но проблема в том, что после этого первого перезапуска он получает OOMKilled каждый раз быстрее и быстрее, пока не попадет в Crashloop. Сначала длится 1 час, потом все реже и реже. kubectl top pods показывает, что память вернулась в нормальное состояние, но внезапно контейнер был уничтожен.

Итак, мои вопросы:

  1. K8s отправляет уничтожение основному процессу контейнера, поэтому модуль как таковой не заменяется, верно? Что происходит с ресурсами pod? Они очищены между перезапусками контейнера?
  2. Что происходит с капсулой при перезапуске контейнера? Может ли это быть утечка Java некоторого типа, файловые дескрипторы? Память Java довольно мала (менее 800 Мб). JVM уничтожается в процессе перезапуска, поэтому это должно произойти.
  3. Возможно ли, что узел, на котором размещен модуль, не освобождает или не очищает используемый модуль?

Удаление модуля с kubectl delete pod выполняет свою работу, и оно продолжается 2 дня снова. Возможно, потому что узел освобождает модуль и перераспределяет его.

Мы в основном записываем значения памяти модуля, беря данные из папки /sys/fs/cgroup/memory, и после первого перезапуска значения возвращаются в нормальное состояние, но он все еще уничтожается.

Мы используем:

  • CentOS с ядром 3.10 в узлах
  • Java 1.8 (1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12)
  • Я настроил JVM с опциями осведомленности cgroup, но мы знаем, что java - это не OOMing.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...