기본 콘텐츠로 건너뛰기

라벨이 ResourceQuota 네임스페이스인 게시물 표시

Kubernetes 노드 메모리 압박으로 인한 OOMKill 폭증 대응 가이드

Kubernetes 노드 메모리 압박으로 인한 OOMKill 폭증 대응 가이드 AI 생성 이미지: K8s 노드 메모리 압박으로 OOMKill 폭증 대응 방안 문제 정의 — 노드 메모리 압박과 OOMKill 폭증의 실제 양상 주로 특정 시점에 OOMKilled 로그가 대량으로 발생하고, 노드가 MemoryPressure 상태로 전환되며 파드가 연쇄적으로 재시작하는 형태가 관찰됩니다. 이와 동시에 kubelet의 eviction 이벤트, dmesg의 oom_reaper 메시지, 그리고 Swap·Available 메모리 지표의 급격한 감소가 동반됩니다. 메모리 과다 사용: 애플리케이션이 예측보다 많은 메모리를 소비하여 노드 여유 자원을 소진합니다. 부적절한 요청/한도: requests가 부족하거나 limits가 미설정되어 스케줄링과 리소스 제한이 제대로 작동하지 않습니다. 메모리 누수: 장기간 운영 중 메모리 사용량이 점진적으로 증가하는 현상입니다. 노드 과밀화/오버커밋: 파드가 한 노드에 과밀하게 배치되어 정상 여유 메모리가 빠르게 사라집니다. 비즈니스 영향으로는 서비스 가용성 저하, 응답 지연과 SLA 위반, 디버깅·재배포 비용 증가 및 알림 폭주로 인한 운영 부담 증가가 있습니다. 실무 체크리스트 예: OOMKilled 발생 시점의 노드 메모리 사용률, kubelet eviction 이벤트, dmesg의 oom_reaper 로그와 해당 파드의 requests/limits, 프로세스별 메모리(RSS)를 우선 확인하세요. 이후 섹션에서는 K8s 노드 메모리 압박으로 OOMKill 폭증 대응 방안에 대한 실무적 접근을 제시합니다. 관찰과 진단 — 어떤 지표와 로그로 원인을 빠르게 파악할까 문제 발생 시에는 교차검증할 핵심 항목들만 빠르게 확인한다. 노드·파드 메모리 사용량: Prometheus(cAdvisor)의 node_memory_MemAvailable_bytes와 container_memory_work...