자발적 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은 노드 상태와 무관하게 개별 컨테이너 문제로 독립적으로 발생.
eviction은 새 키를 순서대로 확인.
GuaranteedPriorityClassBestEffort, BustableGuaranteed는 limit == request라 구조상 1번을 넘길 수 없어서 마지막에 eviction이 되는 것.
oom_score = 실시간 메모리 사용량 점수 * oom_score_adj
oom_score_adj 는 컨테이너 생성 시 QoS로 정해져 박히는 정적 값.
Guaranteed: -997
Burstable: 1000 - (1000 x memRequest / machineMem)
BestEffort: 1000