Platforma automatyzacji Dell: Kontenery oparte na języku Java "OOMKilled" począwszy od jądra 6.12

Summary: Aplikacje konteneryzowane oparte na języku Java (takie jak Keycloak) mogą ulec nieoczekiwanemu zakończeniu z powodu błędów braku pamięci (OOM) podczas uruchamiania w jądrze Linux 6.12 lub nowszym. Ten problem wynika ze zmian w sposobie, w jaki jądro uwidacznia limity pamięci "cgroup". Te zmiany wpływają na zdolność maszyny wirtualnej Java (JVM) do prawidłowego wykrywania i respektowania ograniczeń pamięci kontenera. ...

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

W przypadku platformy automatyzacji Dell NativeEdge keycloak jest coraz OOMKilled podczas inicjalizacji. Na przykład może się to zdarzyć podczas instalacji steru, gdy keycloak Zbliża się kapsuła.

Dzienniki wewnątrz keycloak Zakończ na:

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.

W opisie kontenera znajdują się:

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

W przypadku innych środowisk może to być:

  • System zamyka kontenery Java (na przykład keycloak, Kafka, Elasticsearch) z OOMKilled stan.
  • JVM zgłasza nieoczekiwanie wysokie oszacowania rozmiaru sterty, często zgodne z pamięcią hosta, a nie limitami kontenera.
  • Flagi dostrajania pamięci, takie jak -XX:MaxRAMPercentage wydają się nieskuteczne.
  • Dzienniki mogą zawierać komunikaty, takie jak:
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Cause

Począwszy od jądra Linux 6.12, jądro nie ujawnia już cgroup Informacje o administratorze danych poprzez: /proc/cgroups, na którym wcześniej korzystała maszyna wirtualna JVM w celu wykrywania limitów pamięci kontenera. Ta zmiana przerywa świadomość kontenerów w wersjach JVM, których dotyczy problem, powodując, że zakładają, że mają dostęp do pełnej pamięci hosta. W rezultacie JVM przydziela więcej pamięci, niż pozwala na to kontener, wyzwalając OOMkiller.

Istnieje kilka problemów związanych z tym w projektach open source:

System Ubuntu 24.04.3 domyślnie nie używa jądra 6.12. Ale niektóre obrazy są już aktualizowane do wersji 6.12, 6.13, 6.14 (na przykład w bibliotece obrazów AWS).

Resolution

Możliwe są dwa szybkie sposoby obejścia problemu.

  • Tymczasowo zwiększ limity pamięci dla kontenera. Na przykład poniżej przedstawiono kroki, które należy wykonać, aby kontynuować instalację platformy automatyzacji firmy Dell, podwajając limit pamięci dla keycloak kontener.
W tym celu należy uruchomić następujące polecenie (sprawdź przestrzeń nazw programu Orchestrator, na przykład poniżej dapo jest domyślną przestrzenią nazw programu Orchestrator:
kubectl edit sts keycloak -n dapo
Znajdź limity pamięci i żądania, a następnie je podwoić. keycloak Zużywa dużo pamięci na etapie przygotowania. Ten wzrost pozwolił nam przejść ten etap inicjalizacji.
  • Jawne ustawianie limitów pamięci JVM

Użyj flag startowych, aby ręcznie ograniczyć użycie pamięci:

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, NativeEdge
Article 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.