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. ...
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 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 umOOMKilledestado. - 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:MaxRAMPercentageparecem 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
keycloakrecipiente.
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"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.