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 unOOMKilledestado. - 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:MaxRAMPercentageparecen 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
keycloakcontenedor.
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, 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.