kubernetes: разработка сообщения OOM в кластерных событиях - PullRequest
0 голосов
/ 23 сентября 2019

Я работаю над GKE.

Иногда я вижу следующее сообщение в моих операциях кластера GKE (которое, как я предполагаю, сообщает аналог kubectl get events)

Memory cgroup out of memory: Kill process 670233 (java) score 1728 or sacrifice child
Killed process 670233 (java) total-vm:16535056kB, anon-rss:10437020kB, file-rss:20112kB, shmem-rss:0kB

Конкретный модульимеет следующие ресурсы

          limits:
            cpu: 4096m
            memory: 10Gi
          requests:
            cpu: 1024m
            memory: 8Gi

Должен ли я предполагать, что OOM происходит, потому что стручок достигает> 10 Ги (что является пределом)?

Мой вопрос проистекает из того факта, что когда стручокдостигает своего предела памяти, уничтожение которого должно быть обработано kubelet.

Однако вышеупомянутое, кажется, событие node уровня (точнее, связанное с cgroup событие).

Может ли быть просто совпадением тот факт, что сумма размера резидентного набора (rss-*) чуть выше 10Gi, что является пределом модуля?

1 Ответ

0 голосов
/ 24 сентября 2019

На этот вопрос в большинстве своем уже был дан ответ здесь от Rico:


Я считаю, что на самом деле на него дан ответ здесь

Если вы проверите код ядра Linux здесь .Вы увидите:

/*
 * If any of p's children has a different mm and is eligible for kill,
 * the one with the highest oom_badness() score is sacrificed for its
 * parent.  This attempts to lose the minimal amount of work done while
 * still freeing memory.
 */

мм означает «Управление памятью».

Единственное отличие здесь состоит в том, что это уничтожение запускается cgroups, потому что вы, вероятно, столкнулись с ограничениями памяти.


И для второй части:

Должен ли я считать, что OOM происходит, потому что капсула достигает> 10 Ги (что является пределом)?

Да, в вашем модуле установлен лимит, и он достигнут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...