Plataforma de automação da Dell: Contêineres baseados em Java "OOMKilled" a partir do Kernel 6.12

Zhrnutie: Aplicativos conteinerizados baseados em Java (como Keycloak) podem sofrer encerramento inesperado devido a erros de falta de memória (OOM) ao executar no Linux Kernel 6.12 ou posterior. Esse problema decorre de alterações na forma como o kernel expõe os limites de memória "cgroup". Essas alterações afetam a capacidade da Java Virtual Machine (JVM) de detectar e respeitar corretamente as restrições de memória do contêiner. ...

Tento článok sa vzťahuje na Tento článok sa nevzťahuje na Tento článok nie je viazaný na žiadny konkrétny produkt. V tomto článku nie sú uvedené všetky verzie produktov.

Symptómy

Para o NativeEdge Dell Automation Platform 1.0, keycloak está ficando OOMKilled durante a inicialização. Por exemplo, isso pode acontecer durante a instalação do módulo, quando o keycloak pod está chegando.

Registros dentro do keycloak Termine com:

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.

A descrição do contêiner mostra:

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

Para outros ambientes, pode ser:

  • O sistema encerra contêineres Java (por exemplo, keycloak, Kafka, Elasticsearch) com um OOMKilled Status.
  • A JVM relata estimativas inesperadamente altas de tamanho de heap, muitas vezes correspondendo aos limites de memória do host em vez de contêiner.
  • Sinalizadores de ajuste de memória como -XX:MaxRAMPercentage parecem ineficazes.
  • Os registros podem mostrar mensagens como:
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Príčina

A partir do Linux Kernel 6.12, o kernel não expõe mais cgroup Informações do controlador por /proc/cgroups, no qual a JVM contava anteriormente para detectar limites de memória do contêiner. Essa alteração interrompe o reconhecimento de contêineres nas versões afetadas da JVM, fazendo com que eles presponham que têm acesso à memória completa do host. Como resultado, a JVM aloca mais memória do que o contêiner permite, acionando as OOMkiller.

Há vários problemas para isso em projetos de código aberto:

O Ubuntu 24.04.3 não usa o kernel 6.12 por padrão. Mas algumas imagens já foram atualizadas com as versões 6.12, 6.13 e 6.14 (por exemplo, na biblioteca de imagens da AWS).

Riešenie

Esse problema foi resolvido com a Dell Automated Platform 1.1 e versões posteriores

Se o problema for encontrado na Dell Automated Platform 1.0, há duas soluções temporárias rápidas possíveis.

  • Aumente temporariamente os limites de memória do contêiner. Por exemplo, estas são as etapas para prosseguir com a instalação da Dell Automation Platform, dobrando o limite de memória para o keycloak Recipiente.
Para fazer isso, execute o seguinte comando (verifique o namespace do orquestrador, por exemplo, abaixo dapo é o namespace padrão do orquestrador:
kubectl edit sts keycloak -n dapo
Localize os limites e solicitações de memória e dobre-os. keycloak Consome muita memória na etapa de preparação. Esse aumento nos permitiu passar essa etapa de inicialização.
  • Limites de memória JVM explicitamente definidos

Use indicadores de inicialização para restringir manualmente o uso da memória:

extraEnvVars:
  - name: JAVA_OPTS_KC_HEAP
    value: "-XX:MaxRAMPercentage=70 -XX:MinRAMPercentage=70 -XX:InitialRAMPercentage=50 -XX:MaxRAM=1G"

Dotknuté produkty

Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdge
Vlastnosti článku
Číslo článku: 000369678
Typ článku: Solution
Dátum poslednej úpravy: 28 apr 2026
Verzia:  3
Nájdite odpovede na svoje otázky od ostatných používateľov spoločnosti Dell
Služby podpory
Skontrolujte, či sa na vaše zariadenie vzťahujú služby podpory.