Платформа автоматизации Dell: Контейнеры на основе Java "OOMKilled", начиная с ядра 6.12

Summary: Контейнерные приложения на основе Java (например, Keycloak) могут неожиданно завершаться из-за ошибок нехватки памяти (OOM) при работе с ядром Linux 6.12 или более поздней версии. Эта проблема возникает из-за изменений в том, как ядро выставляет ограничения памяти "cgroup". Эти изменения влияют на способность виртуальной машины Java (JVM) правильно обнаруживать и соблюдать ограничения памяти контейнера. ...

Αυτό το άρθρο ισχύει για Αυτό το άρθρο δεν ισχύει για Αυτό το άρθρο δεν συνδέεται με κάποιο συγκεκριμένο προϊόν. Δεν προσδιορίζονται όλες οι εκδόσεις προϊόντων σε αυτό το άρθρο.

Symptoms

Для платформы автоматизации NativeEdge Dell keycloak получает OOMKilled во время инициализации. Например, это может произойти при установке штурвала, когда keycloak Pod приближается.

Журналы внутри keycloak Заканчивается словами:

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.

В описании контейнера указано:

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

Для других сред это может быть:

  • Система завершает работу Java-контейнеров (например, keycloak, Kafka, Elasticsearch) с параметром OOMKilled статус.
  • JVM сообщает о неожиданно высоких оценках размера кучи, часто совпадающих с ограничениями памяти хоста, а не контейнера.
  • Флаги настройки памяти, такие как -XX:MaxRAMPercentage кажутся неэффективными.
  • В журналах могут отображаться следующие сообщения:
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Cause

Начиная с ядра Linux 6.12, ядро больше не предоставляет cgroup Информация о контроллере от /proc/cgroups, на которую JVM ранее полагалась для определения ограничений памяти контейнера. Это изменение нарушает осведомленность о контейнерах в затронутых версиях JVM, заставляя их предполагать, что у них есть доступ ко всей памяти хоста. В результате JVM выделяет больше памяти, чем позволяет контейнер, вызывая OOMkiller.

Для этого есть несколько проблем в проектах с открытым исходным кодом:

Ubuntu 24.04.3 по умолчанию не использует ядро 6.12. Но некоторые образы обновляются до версий 6.12, 6.13, 6.14 (например, в библиотеке образов AWS).

Resolution

Существует два быстрых решения проблемы.

  • Временно увеличьте лимиты памяти для контейнера. Например, вот как выполнить установку платформы автоматизации Dell, удвоив лимит памяти для keycloak контейнер.
Для этого необходимо выполнить следующую команду (см., например, проверьте пространство имен оркестратора, например, ниже dapo — пространство имен оркестратора по умолчанию:
kubectl edit sts keycloak -n dapo
Найдите ограничения памяти и запросы и удвойте их. keycloak Потребляет много памяти на этапе подготовки. Это увеличение позволило нам пройти этот этап инициализации.
  • Явное задание ограничений памяти JVM

Используйте флаги запуска для ограничения использования памяти вручную:

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

Επηρεαζόμενα προϊόντα

Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdge
Ιδιότητες άρθρου
Article Number: 000369678
Article Type: Solution
Τελευταία τροποποίηση: 16 Οκτ 2025
Version:  2
Βρείτε απαντήσεις στις ερωτήσεις σας από άλλους χρήστες της Dell
Υπηρεσίες υποστήριξης
Ελέγξτε αν η συσκευή σας καλύπτεται από τις Υπηρεσίες υποστήριξης.