Plataforma de automatización de Dell: Contenedores basados en Java "OOMKilled" a partir del kernel 6.12
Zusammenfassung: 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. ...
Dieser Artikel gilt für
Dieser Artikel gilt nicht für
Dieser Artikel ist nicht an ein bestimmtes Produkt gebunden.
In diesem Artikel werden nicht alle Produktversionen aufgeführt.
Symptome
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
Ursache
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).
Lösung
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"Betroffene Produkte
Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdgeArtikeleigenschaften
Artikelnummer: 000369678
Artikeltyp: Solution
Zuletzt geändert: 16 Okt. 2025
Version: 2
Antworten auf Ihre Fragen erhalten Sie von anderen Dell NutzerInnen
Support Services
Prüfen Sie, ob Ihr Gerät durch Support Services abgedeckt ist.