Automatizační platforma Dell: Kontejnery založené na Javě "OOMKilled" počínaje jádrem 6.12
Summary: 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. ...
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
V případě automatizační platformy Dell 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) sOOMKilledstav. - 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:MaxRAMPercentagese 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
Cause
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).
Resolution
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
keycloakkontejner.
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"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.