Plataforma de automatización de Dell: Contenedores basados en Java "OOMKilled" a partir del kernel 6.12

Summary: Las aplicaciones en contenedores basadas en Java (como Keycloak) pueden experimentar una finalización inesperada debido a errores de falta de memoria (OOM) cuando se ejecutan en el kernel de Linux 6.12 o posterior. Este problema se debe a los cambios en la forma en que el kernel expone los límites de memoria de "cgroup". Estos cambios afectan la capacidad de la máquina virtual Java (JVM) de detectar y respetar correctamente las restricciones de memoria del contenedor. ...

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

Para NativeEdge Dell Automation Platform, keycloak se está poniendo OOMKilled durante la inicialización. Por ejemplo, puede suceder durante la instalación de Helm, cuando el keycloak El pod estará disponible.

Registros dentro de keycloak Termina 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.

En la descripción del contenedor, se muestra lo siguiente:

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

Para otros entornos, podría ser:

  • El sistema termina los contenedores de Java (por ejemplo, keycloak, Kafka, Elasticsearch) con un OOMKilled estado.
  • JVM informa estimaciones de tamaño de montón inesperadamente altas, que a menudo coinciden con la memoria del host en lugar de los límites del contenedor.
  • Marcas de ajuste de memoria como -XX:MaxRAMPercentage parecen ineficaces.
  • Los registros pueden mostrar mensajes como los siguientes:
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Cause

A partir del kernel de Linux 6.12, el kernel ya no expone cgroup Información de la controladora por /proc/cgroups, en el que la JVM se basaba anteriormente para detectar los límites de memoria del contenedor. Este cambio rompe el reconocimiento de contenedores en las versiones de JVM afectadas, lo que hace que asuman que tienen acceso a la memoria completa del host. Como resultado, la JVM asigna más memoria de la que permite el contenedor, lo que activa la OOMkiller.

Hay varios problemas para esto en los proyectos de código abierto:

Ubuntu 24.04.3 no utiliza el kernel 6.12 de manera predeterminada. Sin embargo, algunas imágenes ya están actualizadas con las versiones 6.12, 6.13 y 6.14 (por ejemplo, en la biblioteca de imágenes de AWS).

Resolution

Hay dos posibles soluciones alternativas rápidas.

  • Aumente temporalmente los límites de memoria para el contenedor. Por ejemplo, estos son los pasos para continuar con la instalación de Dell Automation Platform, duplicando el límite de memoria para el keycloak contenedor.
Para ello, debe ejecutar el siguiente comando (compruebe el espacio de nombres de Orchestrator, por ejemplo, a continuación dapo es el espacio de nombres predeterminado de Orchestrator:
kubectl edit sts keycloak -n dapo
Encuentre los límites de memoria y las solicitudes, y duplíquelos. keycloak Consume mucha memoria en el paso de preparación. Este aumento nos permitió superar este paso de inicialización.
  • Establecer explícitamente los límites de memoria de JVM

Utilice marcas de inicio para restringir manualmente el uso de 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.