Plataforma de automação da Dell: Contêineres baseados em Java "OOMKilled" a partir do Kernel 6.12
Zusammenfassung: 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. ...
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 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
Ursache
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).
Lösung
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"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.