📜 kubectl logs --previous 완전 정리 (컨테이너 재시작 로그 확인 방법)
2026. 2. 21. 15:37ㆍk8s
Kubernetes를 운영하다 보면 이런 상황을 자주 마주친다.
- Pod가 CrashLoopBackOff 상태
- 애플리케이션이 바로 종료됨
- 이미지 변경 후 비정상 동작
- OOMKilled 발생
이럴 때 단순히 kubectl logs만 보면 원인을 놓칠 수 있다.
그 이유는 현재 실행 중인 컨테이너 로그만 보여주기 때문이다.
이 문제를 해결하는 옵션이 바로:
kubectl logs POD_NAME --previous
이다.
🔎 기본 개념
Pod 안에는 하나 이상의 컨테이너가 있다.
컨테이너가 재시작되면:
- 기존 컨테이너 종료
- 새로운 컨테이너 생성
- 새로운 로그 파일 생성
따라서 기본 명령어:
kubectl logs nginx
은 현재 살아 있는 컨테이너 로그만 보여준다.
반면,
kubectl logs nginx --previous
은
직전에 종료된 컨테이너의 로그를 보여준다.
📦 왜 중요한가?
CrashLoopBackOff 상황을 보자.
kubectl get pod nginx
출력 예:
NAME READY STATUS RESTARTS
nginx 0/1 CrashLoopBackOff 5
이 상태에서 그냥 로그를 보면:
kubectl logs nginx
→ 방금 시작된 컨테이너의 로그만 보인다.
하지만 실제 원인은 이전 컨테이너의 종료 직전 로그에 있다.
이때 사용:
kubectl logs nginx --previous
→ 종료 직전 에러 메시지 확인 가능
📌 사용 예시
1️⃣ 현재 컨테이너 로그 확인
kubectl logs nginx
2️⃣ 이전 컨테이너 로그 확인
kubectl logs nginx --previous
3️⃣ 특정 컨테이너 지정 (멀티 컨테이너 Pod)
kubectl logs nginx -c app --previous
형식:
kubectl logs POD_NAME -c CONTAINER_NAME --previous
🔥 실제 디버깅 흐름
Pod 문제가 발생했을 때 기본 루틴은 다음과 같다.
kubectl get pod
kubectl describe pod
kubectl logs pod --previous
특히 describe 명령에서 다음을 확인한다:
- Restart Count
- Last State
- Exit Code
- Reason (OOMKilled, Error 등)
그 다음 --previous 로그로 원인 분석한다.
⚠️ 주의사항
- 컨테이너가 최소 1회 이상 재시작되어야 한다.
- 직전 1개 로그만 확인 가능하다.
- 노드 로그 로테이션이 되면 사라질 수 있다.
- Pod가 삭제되면 로그도 함께 사라진다.
📊 명령어 비교 정리
| 명령 | 의미 |
|---|---|
| kubectl logs pod | 현재 컨테이너 로그 |
| kubectl logs pod --previous | 직전 컨테이너 로그 |
| kubectl logs pod -f | 실시간 스트리밍 |
| kubectl logs pod -c name | 특정 컨테이너 |
🎯 언제 반드시 써야 할까?
- CrashLoopBackOff
- OOMKilled
- 애플리케이션 즉시 종료
- 이미지 변경 후 실패
- 초기화 실패
컨테이너가 "죽었다가 다시 살아나는" 상황에서는 거의 필수다.
🏁 정리
kubectl logs --previous는
- 재시작된 컨테이너의 이전 로그를 조회하는 옵션
- 장애 원인 분석에 매우 중요
- CrashLoopBackOff 디버깅 핵심 도구
운영 환경에서는 단순 logs보다--previous를 먼저 확인하는 습관이 큰 도움이 된다.
'k8s' 카테고리의 다른 글
| 🌱 kubectl run에서 --env 옵션으로 환경변수 설정하기 (0) | 2026.02.21 |
|---|---|
| 🔎 kubectl run에서 -it는 로그를 보기 위해 필요한가? (0) | 2026.02.21 |
| 🔍 kubectl run에서 sh가 필요할 때와 필요 없는 이유 (0) | 2026.02.21 |
| 🔄 Kubernetes Pod 이미지 변경 시 컨테이너 재시작 동작 이해하기 (0) | 2026.02.21 |
| 📦 Kubernetes ResourceQuota 완전 정리 (Namespace 리소스 제한) (0) | 2026.02.21 |