기본 콘텐츠로 건너뛰기

라벨이 Prometheus 메모리 쿼리인 게시물 표시

Kubernetes 노드 리소스 폭주 시 OOM/Kill 원인 분석 및 대응 가이드

Kubernetes 노드 리소스 폭주 시 OOM/Kill 원인 분석 및 대응 가이드 증상 정의 — 노드 리소스 폭주와 OOM/Kill이란 무엇인가 노드 리소스 폭주는 주로 메모리나 디스크(특히 /var/lib/kubelet) 부족 때문에 커널 또는 kubelet이 프로세스를 강제 종료하는 상황을 뜻합니다. 커널의 OOM(Out‑Of‑Memory)과 Kubernetes 차원의 Eviction/Pod Kill은 밀접하게 연결됩니다. 다음은 흔히 관찰되는 주요 증상입니다. 실무 체크리스트(예): ① 메모리·디스크 사용량 확인 ② kubelet의 eviction threshold 및 이벤트 점검 ③ dmesg/커널 로그 확인. Kubernetes 노드 리소스 폭주 시 OOM/Kill 원인 분석에서는 우선 이 항목들을 점검하세요. Pod 상태: kubectl get pod의 containerStatuses에 "OOMKilled"로 표시되거나, Pod 이벤트에 "Evicted" 또는 "OOMKilled"가 기록됨 커널 로그: dmesg나 /var/log/kern.log에 "Out of memory" 메시지, "Killed process <pid> (<name>)" 또는 oom_score 관련 정보가 남음 kubelet 이벤트/로그: eviction manager에서 "eviction signal" 또는 "threshold met" 경고가 발생하고, 이벤트에 MemoryPressure나 NodeHasDiskPressure가 표시됨 노드 상태 변화: kubectl describe node에서 MemoryPressure나 DiskPressure 조건이 활성화되고, 컨테이너가 반복적으로 재시작하거나 OOM 재시작 루프가 발생함 데이터 수집과 가설 수립 — 어느 항목을, 어떤 시간 범위로 확인할까 ...