← 문제 라이브러리
K8s 입문 K8S 011 · 16분

롤링 업데이트가 끝나지 않음: 새 파드가 Running인데 READY 0/1

오후 3시에 주문 API 새 버전을 배포했는데 20분째 롤아웃이 끝나지 않습니다.

검수된 문제무료
시나리오

오후 3시에 주문 API 새 버전을 배포했는데 20분째 롤아웃이 끝나지 않습니다. 새 파드는 Running이지만 READY가 0/1이고 재시작 횟수는 0입니다. 예전 파드 두 개가 트래픽을 계속 받아서 사용자 영향은 아직 없지만, 다음 배포가 줄줄이 밀리고 있습니다. 이번 배포에는 앱 코드와 함께 차트의 probe 설정을 정리한 커밋이 들어 있습니다. 개발자는 새 코드에 버그가 있다며 앱 로그를 뒤지고 있습니다. 스테이징에서는 코드만 확인하고 probe 설정은 따로 검증하지 않았습니다.

단서
kubectl get pods -l app=orders ; rollout status
NAME                      READY   STATUS    RESTARTS   AGE
orders-5c9f7d6b8-7xk2m    0/1     Running   0          21m
orders-7b6c5d4f9-a1b2c    1/1     Running   0          3d
orders-7b6c5d4f9-d3e4f    1/1     Running   0          3d

$ kubectl rollout status deploy/orders
Waiting for deployment "orders" rollout to finish: 1 out of 3 new replicas have been updated...
kubectl describe pod orders-5c9f7d6b8-7xk2m (이벤트)
Warning  Unhealthy  kubelet  Readiness probe failed: HTTP probe failed with statuscode: 404
probe 설정 / 파드 안에서 확인
readinessProbe:
  httpGet:
    path: /healtz
    port: 8080

$ kubectl exec orders-5c9f7d6b8-7xk2m -- curl -s -o /dev/null -w '%{http_code}' localhost:8080/healthz
200

과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.

먼저 볼 것
  • readiness 실패와 liveness 실패가 파드에 주는 영향의 차이
  • 앱 상태와 probe 설정을 따로 확인하기
점검 체크리스트
  1. kubectl describe pod 의 Unhealthy 이벤트(상태 코드)
  2. probe에 설정된 경로·포트와 앱이 실제로 여는 경로 비교
  3. kubectl exec 로 파드 안에서 그 경로를 직접 호출