Платформа автоматизації Dell: Контейнери на основі Java "OOMKilled", починаючи з Kernel 6.12

Summary: Контейнеризовані програми на основі Java (такі як Keycloak) можуть зіткнутися з несподіваним завершенням через помилки нестачі пам'яті (OOM) під час роботи на Linux Kernel 6.12 або пізніше. Ця проблема пов'язана зі змінами в тому, як ядро виявляє обмеження пам'яті "cgroup". Ці зміни впливають на здатність віртуальної машини Java (JVM) правильно виявляти та поважати обмеження пам'яті контейнера. ...

Αυτό το άρθρο ισχύει για Αυτό το άρθρο δεν ισχύει για Αυτό το άρθρο δεν συνδέεται με κάποιο συγκεκριμένο προϊόν. Δεν προσδιορίζονται όλες οι εκδόσεις προϊόντων σε αυτό το άρθρο.

Symptoms

Для платформи автоматизації NativeEdge Dell, keycloak отримує OOMKilled під час ініціалізації. Наприклад, це може статися під час установки штурвала, коли keycloak стручок підходить.

Колоди всередині keycloak Закінчують на:

Appending additional Java properties to JAVA_OPTS
Changes detected in configuration. Updating the server image.
Updating the configuration and installing your custom providers, if any. Please wait.

В описі контейнера видно:

State: Waiting
  Reason: CrashLoopBackOff
Last State: Terminated
  Reason: OOMKilled

Для інших середовищ це може бути:

  • Система припиняє роботу контейнерів Java (наприклад, keycloak, Kafka, Elasticsearch) з OOMKilled статус.
  • JVM повідомляє про несподівано високі оцінки розміру динамічної пам'яті, які часто відповідають пам'яті хоста, а не обмеженням контейнерів.
  • Прапорці тюнінгу пам'яті на кшталт -XX:MaxRAMPercentage виявляються неефективними.
  • У журналах можуть відображатися такі повідомлення, як:
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Cause

Починаючи з Linux Kernel 6.12, ядро більше не викриває cgroup Інформація про контролера за допомогою /proc/cgroups, на які JVM раніше покладався для виявлення обмежень пам'яті контейнерів. Ця зміна порушує обізнаність контейнерів у відповідних версіях JVM, змушуючи їх вважати, що вони мають доступ до повної пам'яті хоста. В результаті JVM виділяє більше пам'яті, ніж дозволяє контейнер, запускаючи роботу ядра OOMkiller.

Для цього в проектах з відкритим вихідним кодом є кілька питань:

Ubuntu 24.04.3 не використовує ядро 6.12 за замовчуванням. Але деякі зображення оновлюються вже версіями 6.12, 6.13, 6.14 (наприклад, у бібліотеці зображень AWS).

Resolution

Є два можливих швидких обхідних шляхи.

  • Тимчасово збільште ліміти пам'яті для контейнера. Наприклад, ось кроки для продовження встановлення Dell Automation Platform, подвоївши ліміт пам'яті для keycloak контейнер.
Щоб зробити це, вам слід виконати наступну команду (перевірте простір імен вашого оркестратора, наприклад, нижче dapo є простором імен оркестратора за замовчуванням:
kubectl edit sts keycloak -n dapo
Знайдіть ліміти пам'яті та запити та подвоїти їх. keycloak Споживає багато пам'яті на етапі підготовки. Це збільшення дозволило нам пройти цей етап ініціалізації.
  • Явно встановлені обмеження пам'яті JVM

Використовуйте прапорці запуску, щоб вручну обмежити використання пам'яті:

extraEnvVars:
  - name: JAVA_OPTS_KC_HEAP
    value: "-XX:MaxRAMPercentage=70 -XX:MinRAMPercentage=70 -XX:InitialRAMPercentage=50 -XX:MaxRAM=1G"

Επηρεαζόμενα προϊόντα

Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdge
Ιδιότητες άρθρου
Article Number: 000369678
Article Type: Solution
Τελευταία τροποποίηση: 16 Οκτ 2025
Version:  2
Βρείτε απαντήσεις στις ερωτήσεις σας από άλλους χρήστες της Dell
Υπηρεσίες υποστήριξης
Ελέγξτε αν η συσκευή σας καλύπτεται από τις Υπηρεσίες υποστήριξης.