Как механизмы Linux Cgroups (Control Groups) и Namespaces формируют изоляцию внутри Docker-контейнера? Что происходит с Python-процессом, когда он превышает лимит resources.limits.cpu в Kubernetes, и почему превышение limits.memory приводит к OOMKilled, а превышение CPU — только к троттлингу?

Namespaces изолируют представление процессов, сети и файловых систем; cgroups учитывают и ограничивают ресурсы. CPU-лимит ограничивает доступное процессорное время, а память нельзя просто отложить.

Короткий ответ

Что ответить на собеседовании

Namespaces изолируют представление процессов, сети и файловых систем; cgroups учитывают и ограничивают ресурсы. CPU-лимит ограничивает доступное процессорное время, а память нельзя просто отложить.

Подробный разбор

Ответ с пояснениями

Namespaces изолируют представление процессов, сети и файловых систем; cgroups учитывают и ограничивают ресурсы. CPU-лимит ограничивает доступное процессорное время, а память нельзя просто отложить.

При исчерпании CPU-квоты Python-процесс остаётся жив, но дольше ждёт выполнения: растут задержки, а не обязательно возникает ошибка. При нехватке памяти в cgroup ядро пытается освободить ресурсы и может убить процесс; завершение контейнера отражается как OOMKilled. Это разные механизмы, и namespaces не заменяют ни лимиты, ни полноценную границу виртуальной машины.

Источник: kubernetes.io.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее