Azure AKS 파드가 CrashLoopBackOff? 원인 추적 5단계

Azure AKS 파드 CrashLoopBackOff 디버깅 - 쿠버네티스 로그 추적

한눈에 보기

  • AKS에서 파드가 CrashLoopBackOff로 계속 재시작될 때, 원인을 좁히는 5단계 순서를 정리합니다.
  • 핵심은 describe → 이전 로그 → 종료코드 → 프로브 → 리소스를 차례로 보는 것.
  • 대부분 설정·이미지·헬스체크·리소스 부족 중 하나입니다.

CrashLoopBackOff는 ‘컨테이너가 시작 직후 죽고, 쿠버네티스가 점점 간격을 늘려 재시작하는’ 상태입니다. 에러가 아니라 ‘증상’이라, 진짜 원인은 로그와 종료코드에 있습니다. 순서대로 좁혀봅시다.

1단계: 파드 상태와 이벤트 보기

kubectl describe의 하단 이벤트와 재시작 횟수, 마지막 상태(Last State)의 종료 코드를 확인합니다.

kubectl describe pod <POD> -n <NS>
# 하단 Events와 Last State: Terminated의 Exit Code 확인

2단계: ‘이전’ 컨테이너 로그 보기

이미 죽었으므로 현재 로그가 아니라 –previous로 직전에 죽은 컨테이너 로그를 봐야 진짜 에러가 나옵니다.

kubectl logs <POD> -n <NS> --previous

3단계: 종료 코드로 원인 좁히기

종료 코드의미흔한 원인
0 직후 종료정상 종료인데 재시작메인 프로세스가 백그라운드로 빠짐
1 / 일반 오류앱 자체 예외설정값·환경변수 누락
137 (OOMKilled)메모리 초과limits 너무 낮음
143SIGTERM헬스체크 실패로 강제 종료

4단계: 헬스체크(프로브) 점검

앱은 멀쩡한데 liveness 프로브가 너무 빡세면 부팅 중에 죽습니다. initialDelaySeconds를 늘리거나 프로브 경로·포트가 맞는지 확인하세요.

5단계: 리소스·이미지 확인

  • OOMKilled(137)면 메모리 limit을 올리거나 앱 메모리 사용을 줄입니다.
  • ImagePullBackOff를 동반하면 이미지 태그·ACR 권한 문제입니다.
  • ConfigMap/Secret 누락이면 마운트·키 이름을 확인합니다.

흔한 실수

  • –previous 없이 현재 로그만 봄 — 비어 있거나 엉뚱한 로그만 나옵니다.
  • limits를 0으로 두거나 과하게 낮춤 — OOM 반복.
  • 프로브를 끄고 덮기 — 증상은 사라져도 근본 원인이 남습니다.

자주 묻는 질문(FAQ)

  • Q. 로그가 비어 있어요. A. –previous를 쓰거나, 그래도 없으면 describe의 이벤트와 종료코드로 추적하세요.
  • Q. 137이 자꾸 떠요. A. OOMKilled입니다. 메모리 limit 상향 또는 앱 최적화가 필요합니다.
  • Q. 로컬에선 되는데 AKS에서만 죽어요. A. 환경변수·Secret·프로브 설정 차이를 먼저 의심하세요.

마치며

CrashLoopBackOff는 ‘증상’입니다. describe → –previous 로그 → 종료코드 → 프로브 → 리소스 순서면 대부분 10분 안에 진짜 원인이 드러납니다.

댓글 남기기