Plate-forme d’automatisation Dell : Conteneurs Java « OOMKilled » à partir du noyau 6.12

Summary: Les applications conteneurisées basées sur Java (telles que Keycloak) peuvent subir un arrêt inattendu en raison d’erreurs de mémoire insuffisante (OOM) lorsqu’elles sont exécutées sur le noyau Linux 6.12 ou une version ultérieure. Ce problème provient de modifications apportées à la façon dont le noyau expose les limites de mémoire « cgroup ». Ces modifications affectent la capacité de la machine virtuelle Java (JVM) à détecter et à respecter correctement les contraintes de mémoire des conteneurs. ...

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

Pour NativeEdge Dell Automation Platform, keycloak c’est de plus en plus OOMKilled lors de l’initialisation. Par exemple, cela peut se produire lors de l’installation de Helm, lorsque le keycloak Pod bientôt disponible.

Logs à l’intérieur de keycloak Terminez par :

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 description du conteneur présente les éléments suivants :

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

Pour les autres environnements, il peut s’agir de :

  • Le système arrête les conteneurs Java (par exemple, keycloak, Kafka, Elasticsearch) avec un attribut OOMKilled statut.
  • La machine virtuelle Java signale des estimations inattendues de la taille du segment de mémoire, qui correspondent souvent à la mémoire hôte plutôt qu’aux limites du conteneur.
  • Balises de réglage de la mémoire telles que -XX:MaxRAMPercentage semblent inefficaces.
  • Les journaux peuvent afficher des messages tels que :
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Cause

À partir de la version 6.12 du noyau Linux, le noyau n’est plus exposé cgroup Informations relatives au contrôleur par /proc/cgroups, sur lequel la JVM s’appuyait auparavant pour détecter les limites de mémoire des conteneurs. Cette modification rompt la détection des conteneurs dans les versions JVM concernées, ce qui suppose qu’ils ont accès à la mémoire hôte complète. Par conséquent, la JVM alloue plus de mémoire que le conteneur ne le permet, ce qui déclenche le OOMkiller.

Il y a plusieurs problèmes pour cela dans les projets open-source :

Ubuntu 24.04.3 n’utilise pas le noyau 6.12 par défaut. Mais certaines images sont déjà mises à jour avec les versions 6.12, 6.13 ou 6.14 (par exemple, dans la bibliothèque d’images AWS).

Resolution

Il existe deux solutions de contournement rapide possibles.

  • Augmentez temporairement les limites de mémoire du conteneur. Par exemple, voici les étapes à suivre pour procéder à l’installation de Dell Automation Platform, en doublant la limite de mémoire pour le keycloak conteneur.
Pour ce faire, vous devez exécuter la commande suivante (vérifiez votre espace de nommage orchestrator, par exemple, ci-dessous dapo est l’espace de nommage Orchestrator par défaut :
kubectl edit sts keycloak -n dapo
Trouvez les limites et les demandes de mémoire, et doublez-les. keycloak consomme beaucoup de mémoire lors de l’étape de préparation. Cette augmentation nous a permis de passer cette étape d’initialisation.
  • Définition explicite des limites de mémoire JVM

Utilisez les indicateurs de démarrage pour restreindre manuellement l’utilisation de la mémoire :

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.