Назад | Перейти на главную страницу

Kubernetes DaemonSet Pod превышает лимит памяти, но не убивается

Мы используем кубернеты (в частности, openshift) для запуска нашей инфраструктуры в нашей команде.

Один из наборов демонов, fluentd, в настоящее время вызывает много проблем, часто останавливая полные узлы с огромными требованиями к процессору, памяти и дисковым операциям ввода-вывода (на самом деле, это абсолютно глупо!).

Мы установили следующие ограничения ресурсов и запросы для модуля в определении DaemonSet:

resources:
  limits:
    memory: 512Mi
  requests:
    cpu: 100m
    memory: 512Mi

Я ожидал, что k8s убьет pod, когда потребление памяти превысит 512Mi. Тем не менее, этим модулям разрешено использовать более 1000% ЦП и всю доступную оперативную память на компьютере (намного больше 512 МБ).

Я провел некоторое исследование, и, похоже, мир полностью разделился по поводу того, что происходит при превышении пределов памяти.

  1. Некоторые говорят pod будет продолжать работать, пока система не станет OOM и не решит что-нибудь убить.
  2. Другие говорят модуль будет немедленно убит, когда он превысит выделенную память.

Нам бы очень хотелось, чтобы второй вариант случился с этой надоедливой капсулой! Что нам не хватает?

Помимо установки вышеупомянутых ограничений, я бы порекомендовал вам в этой ситуации установить квоту ресурсов для пространства имен, а также ограничения по умолчанию для всех контейнеров в пространстве имен, которое описано Вот.

В дополнение к этому вы можете настроить Обработка нехватки ресурсов. Надеюсь, это вам поможет.

Вы управляли кубернетами / ограничениями кластера / запросом на уничтожение модулей, когда они чрезмерно потребляют ЦП / ОЗУ, вместо того, чтобы применять эти ограничения в вашей диаграмме Helm или файле конфигурации K8s?

Отличная ссылка на ваш вопрос: ВОТ

Хорошего дня, надеюсь помочь вам хоть немного