-
Kubernetes Pod Ready 0/1 원인과 해결방법WEB/BACK 2026. 10. 6. 09:00반응형
Kubernetes를 사용하다 보면 다음과 같은 상태를 볼 수 있습니다.
NAME READY STATUS RESTARTS AGE my-api-7fc7944d4f-jtk95 0/1 Running 4 5m여기서 가장 눈에 띄는 부분이 바로 READY 0/1입니다.
Pod의 상태가 Running인데 왜 Ready는 0/1일까요?
이번 글에서는 Kubernetes에서 0/1 상태가 발생하는 대표적인 이유와 확인 순서를 정리하겠습니다.
1. READY 0/1이 의미하는 것
0/1은 Pod 안의 컨테이너 1개 중 현재 Ready 상태인 컨테이너가 0개라는 의미입니다.
반대로 다음과 같다면 정상적인 Ready 상태입니다.
READY 1/1즉,
- 0/1 → 컨테이너는 있지만 Ready 상태가 아님
- 1/1 → 컨테이너가 Ready 상태
2. Running인데 왜 Ready가 아닐까?
여기서 헷갈리기 쉽습니다.
Running과 Ready는 같은 의미가 아닙니다.
Running은 컨테이너가 실행되고 있다는 의미이고, Ready는 Kubernetes가 해당 컨테이너를 실제 서비스에 사용할 준비가 되었다고 판단했다는 의미입니다.
3. 가장 먼저 Pod 상세정보 확인하기
문제가 생기면 가장 먼저 다음 명령어를 실행해봅니다.
kubectl describe pod POD_NAME예를 들어:
kubectl describe pod my-api-7fc7944d4f-jtk95결과의 아래쪽에 있는 Events 부분을 확인하는 것이 중요합니다.
Events: Type Reason Message Warning Unhealthy Readiness probe failed이런 메시지가 있다면 Readiness Probe를 확인해야 합니다.
4. Pod 로그 확인하기
애플리케이션 자체에서 문제가 발생했을 수도 있습니다.
kubectl logs POD_NAME예:
kubectl logs my-api-7fc7944d4f-jtk95Spring Boot, FastAPI 등의 애플리케이션이 시작하다가 오류가 발생했다면 로그에서 원인을 확인할 수 있습니다.
5. 컨테이너가 재시작됐다면 --previous 확인
특히 RESTARTS가 증가하고 있다면 이전 컨테이너가 왜 종료됐는지도 확인해야 합니다.
kubectl logs POD_NAME --previous예를 들어:
kubectl logs my-api-7fc7944d4f-jtk95 --previous이 명령은 이전 컨테이너의 로그를 확인할 때 유용합니다.
6. Readiness Probe 확인
Deployment YAML에 다음과 같은 설정이 있을 수 있습니다.
readinessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 10 periodSeconds: 10이 경우 Kubernetes는 다음 주소를 확인합니다.
http://컨테이너IP:8000/health이 요청이 정상적으로 성공하지 않으면 Pod가 실행 중이어도 Ready 상태가 되지 않을 수 있습니다.
7. 애플리케이션 포트 확인
Readiness Probe에서 8000번 포트를 확인하고 있는데 애플리케이션은 8080번 포트에서 실행되고 있다면 문제가 발생할 수 있습니다.
예를 들어 FastAPI가 다음처럼 실행되고 있다고 해보겠습니다.
uvicorn main:app --host 0.0.0.0 --port 8000이 경우 Kubernetes Probe도 실제 애플리케이션 포트와 맞아야 합니다.
8. 애플리케이션이 127.0.0.1로만 실행되는 경우
컨테이너 안에서 애플리케이션을 실행할 때 127.0.0.1에만 바인딩되어 있으면 외부에서 접근하지 못하는 문제가 생길 수 있습니다.
FastAPI라면 컨테이너 환경에서 다음과 같이 실행하는 경우가 많습니다.
uvicorn main:app --host 0.0.0.0 --port 8000
9. 문제 확인 순서
kubectl get podskubectl describe pod POD_NAMEkubectl logs POD_NAMEkubectl logs POD_NAME --previous- Readiness Probe 확인
- 애플리케이션 포트 확인
- 애플리케이션 로그 확인
10. 정리
Kubernetes에서 READY 0/1이 보인다고 해서 무조건 컨테이너가 죽었다는 의미는 아닙니다.
컨테이너는 실행 중이지만 Kubernetes가 "아직 트래픽을 받아도 되는 상태가 아니다"라고 판단하고 있을 수 있습니다.
따라서 가장 먼저
kubectl describe pod와kubectl logs를 확인하고, Readiness Probe와 애플리케이션 상태를 순서대로 확인하면 됩니다.관련 검색어
Kubernetes Ready 0/1, Kubernetes Pod 0/1, Pod Running Ready 0/1, Kubernetes Readiness Probe, kubectl describe pod, kubectl logs
반응형'WEB > BACK' 카테고리의 다른 글
FastAPI BackgroundTasks 사용법 | API 응답 후 작업 실행하기 (0) 2026.10.06 Docker 컨테이너 로그 확인하는 방법 | docker logs 사용법 총정리 (0) 2026.10.06 FastAPI 422 Unprocessable Entity 오류 원인과 해결방법 (0) 2026.10.06 웹보안 (2) 2025.07.04 springboot dynamic datasource, 동적 데이터 (AbstractRoutingDataSource) (0) 2025.02.21