Requests и Limits в Kubernetes. Что происходит при превышении memory limit и CPU limit?
Ответ от нейросети
sobes.tech AI
В Kubernetes для контейнеров можно задавать два параметра ресурсов: requests и limits.
- Requests — минимальное количество ресурсов, которое гарантированно выделяется контейнеру. Планировщик использует эти значения для размещения подов на узлах.
- Limits — максимальное количество ресурсов, которое контейнер может использовать.
Что происходит при превышении лимитов:
-
CPU limit: Если контейнер пытается использовать CPU больше, чем указано в лимите, Kubernetes (через cgroups) ограничит его использование CPU. Контейнер не будет убит, но его процессам будет выделяться меньше CPU, чем они хотят, что может привести к снижению производительности.
-
Memory limit: Если контейнер превысит лимит по памяти, ядро Linux (через OOM Killer) убьёт процесс контейнера, так как память выделяется жестко. В результате контейнер перезапустится (если настроен RestartPolicy).
Пример в манифесте:
resources:
requests:
memory: "128Mi"
cpu: "250m"
limits:
memory: "256Mi"
cpu: "500m"
Здесь контейнер гарантированно получит 128Mi памяти и 250m CPU, но не сможет использовать больше 256Mi памяти и 500m CPU.