Piattaforma di automazione Dell: Container basati su Java "OOMKilled" a partire dal Kernel 6.12

Summary: Le applicazioni containerizzate basate su Java (ad esempio Keycloak) potrebbero subire una chiusura imprevista a causa di errori di memoria insufficiente (OOM) durante l'esecuzione sul kernel Linux 6.12 o versione successiva. Questo problema deriva dalle modifiche apportate al modo in cui il kernel espone i limiti di memoria "cgroup". Queste modifiche influiscono sulla capacità della JVM (Java Virtual Machine) di rilevare e rispettare correttamente i vincoli di memoria del container. ...

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

Per NativeEdge Dell Automation Platform, keycloak sta ottenendo OOMKilled durante l'inizializzazione. Ad esempio può accadere durante l'installazione del timone, quando il keycloak Il pod sta arrivando.

Registri all'interno di keycloak Terminare con:

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.

La descrizione del container mostra:

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

Per altri ambienti, potrebbe essere:

  • Il sistema termina i container Java (ad esempio, keycloak, Kafka, Elasticsearch) con un OOMKilled stato.
  • JVM segnala stime delle dimensioni dell'heap inaspettatamente elevate, spesso corrispondenti alla memoria host anziché ai limiti del container.
  • Flag di ottimizzazione della memoria come -XX:MaxRAMPercentage appaiono inefficaci.
  • I registri possono mostrare messaggi come:
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Cause

A partire dal kernel Linux 6.12, il kernel non espone più cgroup Informazioni sul titolare del trattamento /proc/cgroups, su cui la JVM si basava in precedenza per rilevare i limiti di memoria del container. Questa modifica interrompe il riconoscimento dei container nelle versioni JVM interessate, inducendo a presumere di avere accesso all'intera memoria host. Di conseguenza, la JVM alloca più memoria di quanta ne consenta il container, attivando il kernel OOMkiller.

Ci sono diversi problemi per questo nei progetti open source:

Ubuntu 24.04.3 non utilizza il kernel 6.12 per impostazione predefinita. Tuttavia, alcune immagini sono già aggiornate con le versioni 6.12, 6.13, 6.14 (ad esempio, nella libreria di immagini AWS).

Resolution

Esistono due possibili soluzioni alternative.

  • Aumentare temporaneamente i limiti di memoria per il container. Ad esempio, di seguito sono riportati i passaggi per procedere con l'installazione di Dell Automation Platform, raddoppiando il limite di memoria per keycloak contenitore.
A tale scopo, è necessario eseguire il comando seguente (controllare lo spazio dei nomi dell'agente di orchestration, ad esempio, di seguito dapo È il namespace dell'orchestrator predefinito:
kubectl edit sts keycloak -n dapo
Individuare i limiti di memoria e le richieste e raddoppiarli. keycloak Consuma molta memoria nella fase di preparazione. Questo aumento ci ha permesso di superare questo passaggio di inizializzazione.
  • Impostazione esplicita dei limiti di memoria JVM

Utilizzare i flag di avvio per limitare manualmente l'utilizzo della memoria:

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.