Сначала отличите eviction kubelet от OOMKill контейнера и системного OOM. Корректные requests и limits не гарантируют отсутствие MemoryPressure: память нужна также ядру и системным процессам.
В Kubernetes-кластере с 200 подами внезапно начались случайные вытеснения из-за нехватки памяти, хотя requests и limits настроены корректно. Как диагностировать проблему и определить, вызвана ли она памятью ядра, swap или фрагментацией памяти?
Сначала отличите eviction kubelet от OOMKill контейнера и системного OOM. Корректные requests и limits не гарантируют отсутствие MemoryPressure: память нужна также ядру и системным процессам.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сначала отличите eviction kubelet от OOMKill контейнера и системного OOM. Корректные requests и limits не гарантируют отсутствие MemoryPressure: память нужна также ядру и системным процессам.
Сопоставьте события Pod, журналы kubelet и ядра, memory.available и пороги eviction на узле. Проверьте cgroup memory.stat, slab, page tables, сетевые буферы, системные службы и резервирование памяти. Swap оценивают по фактической конфигурации kubelet и ОС, а фрагментацию — по buddyinfo и сообщениям об отказах выделения, не по одному проценту занятой RAM. Сравните затронутые узлы и рост нагрузки. Не увеличивайте лимиты вслепую: это может усилить давление и не устранить источник.
Источник: kubernetes.io.