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

Summary: 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. ...

Acest articol se aplică pentru Acest articol nu se aplică pentru Acest articol nu este legat de un produs specific. Acest articol nu acoperă toate versiunile de produs existente.

Symptoms

Para a Dell Automation Platform NativeEdge, 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 estado.
  • 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

Cause

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).

Resolution

Há duas possíveis soluções temporárias rápidas.

  • 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"

Produse afectate

Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdge
Proprietăți articol
Article Number: 000369678
Article Type: Solution
Ultima modificare: 16 Oct 2025
Version:  2
Găsiți răspunsuri la întrebările dvs. de la alți utilizatori Dell
Servicii de asistență
Verificați dacă dispozitivul dvs. este acoperit de serviciile de asistență.