Sobes.tech
Middle+
31

Requests и Limits в Kubernetes. Что происходит при превышении memory limit и CPU limit?

Companies where asked
Employcity

Answer from AI

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.