Мой модуль получает статус убитого ООМ, но не убит. Почему? - PullRequest
0 голосов
/ 30 октября 2019

Я настроил CronJob с файлом YAML (apiVersion: batch / v1beta1) с запросами и ограничениями на ресурсы, модуль успешно создан и работает до его естественного конца, но когда он завершился, я увидел, что он помечен как OOMKilled.

Мой модуль работает с контейнером Docker, который запускается с помощью bash-скрипта, который вызывает некоторые инструменты Java (например, maven). Я попытался настроить MAVEN_OPTS и JAVAOPTS следующим образом:

        env:
          - name: JAVA_OPTS
            value: "-Xms256M -Xmx1280M"
          - name: MAVEN_OPTS
            value: "-Xms256M -Xmx1280M"

Это значения ниже, чем значения настроенного предела в YAML.

Я ожидал, что модуль остановится вполный статус моего последнего эхо-сценария ENTRY_POINT отображается в журнале модуля, но я получаю OOMKilled.

1 Ответ

1 голос
/ 30 октября 2019

Когда для контейнеров заданы запросы ресурсов, планировщик может принимать лучшие решения о том, на каких узлах размещать блоки. Но имейте в виду: вычислительные ресурсы (ЦП / память) сконфигурированы для контейнеров, а не для модулей.

Если контейнер модуля уничтожен OOM, модуль не исключен . Базовый контейнер перезапускается kubelet на основании его RestartPolicy.

Ваш контейнер завершается OOMKill, не подразумевает, что модуль становится вCompleted/Error статус (если вы не используете RestartPolicy: Never).

Если вы сделаете kubectl describe на вашем модуле, контейнер будет в состоянии Running, но вы сможете найти последний перезапускпричина в Last State. Также вы можете проверить, сколько раз он был перезапущен:

State:          Running
  Started:      Wed, 27 Feb 2019 10:29:09 +0000
Last State:     Terminated
  Reason:       OOMKilled
  Exit Code:    137
  Started:      Wed, 27 Feb 2019 06:27:39 +0000
  Finished:     Wed, 27 Feb 2019 10:29:08 +0000
Restart Count:  5
...