Платформа автоматизації Dell: Контейнери на основі Java "OOMKilled", починаючи з Kernel 6.12
Summary: Контейнеризовані програми на основі Java (такі як Keycloak) можуть зіткнутися з несподіваним завершенням через помилки нестачі пам'яті (OOM) під час роботи на Linux Kernel 6.12 або пізніше. Ця проблема пов'язана зі змінами в тому, як ядро виявляє обмеження пам'яті "cgroup". Ці зміни впливають на здатність віртуальної машини Java (JVM) правильно виявляти та поважати обмеження пам'яті контейнера. ...
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
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"Affected Products
Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdgeArticle Properties
Article Number: 000369678
Article Type: Solution
Last Modified: 16 Oct 2025
Version: 2
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.