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

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

Acest articol se aplică pentru Acest articol nu se aplică pentru Acest articol nu este legat de un produs specific. Acest articol nu acoperă toate versiunile de produs existente.

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"

Produse afectate

Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdge
Proprietăți articol
Article Number: 000369678
Article Type: Solution
Ultima modificare: 16 Oct 2025
Version:  2
Găsiți răspunsuri la întrebările dvs. de la alți utilizatori Dell
Servicii de asistență
Verificați dacă dispozitivul dvs. este acoperit de serviciile de asistență.