2026.08.14

세 가지 매커니즘

자발적 eviction 아래 “짧게 정리” 참고.

node-pressure eviction global OOM cgroup(memcg) OOM
주체 kubelet (유저스페이스) 커널 커널
발동 임계치 초과 (선제적) 노드 메모리 실제 고갈 cgroup limit 초과
감지 10s 폴링 (또는 memcg notification) 할당 실패 즉시 할당 실패 즉시
죽는 단위 파드 프로세스 cgroup 내 프로세스
결과 Evicted → 타 노드 재스케줄 OOMKilled(137), 재시작 OOMKilled(137), 같은 노드 재시작

eviction커널이 터지기 전에 막는 1차 방어선이고, global OOM이 떴다는 건 eviction이 못 잡았다는 신호.

폴링 주기보다 빠른 메모리 급증이거나 workingSet 계산과 실제 커널 압박의 괴리.

cgroup OOM은 노드 상태와 무관하게 개별 컨테이너 문제로 독립적으로 발생.

우선순위 계산

eviciton

eviction은 새 키를 순서대로 확인.

  1. 메모리 사용량이 request를 초과했는가? → Guaranteed
  2. 파드 priority → PriorityClass
  3. request 대비 초과량 → BestEffort, Bustable

Guaranteed는 limit == request라 구조상 1번을 넘길 수 없어서 마지막에 eviction이 되는 것.

global OOM

oom_score = 실시간 메모리 사용량 점수 * oom_score_adj

oom_score_adj 는 컨테이너 생성 시 QoS로 정해져 박히는 정적 값.

Guaranteed: -997

Burstable: 1000 - (1000 x memRequest / machineMem)

BestEffort: 1000

eviction 튜닝