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

kubernetes - событие OOM на физическом узле kubernetes - как ограничить?

У меня есть собственные физические узлы Kubernetes, размещенные на физических машинах. (12 ядер, 16 ГБ оперативной памяти). Я заметил, что во время большой нагрузки у меня в журналах появляются сбойные модули и события OOM (убийство из-за нехватки памяти).

Как я могу заставить Kubernetes не планировать никаких заданий на узле, если RAM исчерпана? Я бегаю kubernetes v1.16.11 и CentOS Linux 7 3.10.0-1127.10.1.el7.x86_64

P.S Я добавляю фрагмент вызывающего ошибку кода модуля, использую запросы и ограничиваю

    containers:
  - name: jnlp
  (...)
    resources:
      requests:
        cpu: 500m
        memory: 1024Mi
      limits:
        memory: 2048Mi

 - name: build
  (...)
    resources:
      requests:
        cpu: 3000m
        memory: 4096Mi

Как отмечали другие, вам, скорее всего, не хватает requests и limits для ваших стручков. В вашем случае, поскольку даже ваше ядро ​​сообщает о событиях OOM, ваши поды, похоже, потребляют много памяти. Вы можете узнать больше об управлении ресурсами здесь: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

Итак, просмотрите свои поды и попытайтесь задействовать ресурсы контейнера. Вот пример контейнера, который «резервирует» 300Mi памяти (ресурсы, которые контейнер гарантированно получит), но может использовать до 600Mi памяти:

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: example-image:1.0
    resources:
      requests:
        memory: "300Mi"
        cpu: "1000m"
      limits:
        memory: "600Mi"
        cpu: "2000m"

Если контейнер пытается использовать более 600 МБ памяти, он будет отключен.