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

Zusammenfassung: 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. ...

Dieser Artikel gilt für Dieser Artikel gilt nicht für Dieser Artikel ist nicht an ein bestimmtes Produkt gebunden. In diesem Artikel werden nicht alle Produktversionen aufgeführt.

Symptome

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

Ursache

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).

Lösung

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"

Betroffene Produkte

Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdge
Artikeleigenschaften
Artikelnummer: 000369678
Artikeltyp: Solution
Zuletzt geändert: 16 Okt. 2025
Version:  2
Antworten auf Ihre Fragen erhalten Sie von anderen Dell NutzerInnen
Support Services
Prüfen Sie, ob Ihr Gerät durch Support Services abgedeckt ist.