Automatizační platforma Dell: Kontejnery založené na Javě "OOMKilled" počínaje jádrem 6.12

Zhrnutie: Kontejnerizované aplikace založené na jazyce Java (například Keycloak) mohou při spuštění v jádře Linux Kernel 6.12 nebo novějším zaznamenat neočekávané ukončení kvůli chybám OOM (nedostatek paměti). Tento problém pramení ze změn v tom, jak jádro zveřejňuje limity paměti "cgroup". Tyto změny mají vliv na schopnost prostředí Java Virtual Machine (JVM) správně detekovat a respektovat omezení paměti kontejneru. ...

Tento článok sa vzťahuje na Tento článok sa nevzťahuje na Tento článok nie je viazaný na žiadny konkrétny produkt. V tomto článku nie sú uvedené všetky verzie produktov.

Symptómy

V případě platformy Dell Automation Platform 1.0 NativeEdge keycloak je stále více OOMKilled během inicializace. Může k tomu dojít například během instalace kormidla, kdy keycloak Pod se blíží.

Protokoly uvnitř keycloak Ukončit:

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.

Popis kontejneru zobrazuje:

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

V jiných prostředích to může být:

  • Systém ukončí kontejnery Java (například keycloak, Kafka, Elasticsearch) s OOMKilled Stav.
  • Prostředí JVM hlásí neočekávaně vysoké odhady velikosti haldy, které často odpovídají paměti hostitele, nikoli limitům kontejnerů.
  • Příznaky ladění paměti jako -XX:MaxRAMPercentage se jeví jako neúčinné.
  • V protokolech se mohou zobrazovat zprávy jako:
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Príčina

Počínaje linuxovým jádrem 6.12 již jádro nezpřístupňuje cgroup Informace o řadiči podle /proc/cgroups, na který se JVM dříve spoléhal při zjišťování limitů paměti kontejneru. Tato změna přeruší rozpoznávání kontejnerů v ovlivněných verzích prostředí JVM, což způsobí, že budou předpokládat, že mají přístup k úplné paměti hostitele. V důsledku toho JVM přiděluje více paměti, než umožňuje kontejner, a aktivuje tak proces jádra OOMkiller.

V opensourcových projektech existuje několik problémů:

Systém Ubuntu 24.04.3 ve výchozím nastavení nepoužívá jádro 6.12. Některé image jsou ale aktualizované už na verze 6.12, 6.13, 6.14 (například v knihovně imagí AWS).

Riešenie

Tento problém je vyřešen z platformy Dell Automated Platform 1.1 a novější

Pokud k problému dochází v automatizované platformě Dell 1.0, existují dvě možná rychlá zástupná řešení.

  • Dočasně zvyšte limity paměti pro kontejner. Zde jsou například kroky, jak pokračovat v instalaci automatizační platformy Dell Automation Platform, která zdvojnásobí limit paměti pro keycloak Kontejner.
Chcete-li tak učinit, musíte spustit následující příkaz (zkontrolujte jmenný prostor nástroje Orchestrator, například níže: dapo je výchozí obor názvů nástroje Orchestrator:
kubectl edit sts keycloak -n dapo
Najděte limity paměti a požadavky a zdvojnásobte je. keycloak V přípravném kroku spotřebovává velké množství paměti. Toto zvýšení nám umožnilo projít tímto inicializačním krokem.
  • Explicitní nastavení limitů paměti JVM

K ručnímu omezení využití paměti použijte příznaky při spuštění:

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

Dotknuté produkty

Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdge
Vlastnosti článku
Číslo článku: 000369678
Typ článku: Solution
Dátum poslednej úpravy: 28 apr 2026
Verzia:  3
Nájdite odpovede na svoje otázky od ostatných používateľov spoločnosti Dell
Služby podpory
Skontrolujte, či sa na vaše zariadenie vzťahujú služby podpory.