IT InfraTree 가이드

ImagePullBackOff 가이드

ImagePullBackOff에서 먼저 확인할 registry와 Secret

이미지 이름은 맞아 보이지만 tag, registry credential, network policy 때문에 pull이 실패하는 상황에서 먼저 볼 신호, CLI 확인 순서, 흔한 오진, 안전한 복구 방향을 정리한 InfraTree 가이드입니다.

ImagePullBackOff는 “이미지 문제”가 아니라 네 가지 중 하나다

ImagePullBackOff는 kubelet이 이미지 pull에 실패해 재시도를 미루는 상태다. 원인은 대개 이름/태그 오타 · 인증 · 레이트리밋 · 네트워크 넷 중 하나인데, 이걸 가르는 문장이 describe의 Events에 그대로 찍혀 있다. 로그가 아니라 Events의 정확한 사유 문자열부터 읽는다.

kubectl describe pod <pod> -n <ns> | sed -n '/Events/,$p'

사유 문자열로 원인을 가른다

  • manifest unknown / not found / repository does not exist — 이름·태그 오타이거나 존재하지 않는 태그다. 매니페스트에 태그를 안 적어 :latest로 붙었는데 그 태그가 없는 경우가 흔하다. 로컬에서 docker pull <image>로 그대로 재현해 본다.
  • unauthorized / authentication required / pull access denied — 프라이빗 레지스트리 인증 문제. imagePullSecret이 같은 namespace에 있는지, 타입이 kubernetes.io/dockerconfigjson인지, Pod(또는 ServiceAccount)에 연결됐는지를 본다.
  • toomanyrequests (Docker Hub rate limit) — 익명 pull 한도. 인증을 붙이거나 사내 미러/캐시로 돌린다.
  • dial tcp … i/o timeout / no such host — 노드에서 레지스트리로 못 나감. 프록시·방화벽·사설 DNS 문제이지 이미지 문제가 아니다.

인증이 원인일 때 실제로 확인할 것

kubectl get secret <pull-secret> -n <ns> -o jsonpath='{.type}'   # dockerconfigjson 이어야
kubectl get sa default -n <ns> -o jsonpath='{.imagePullSecrets}'  # SA 연결 여부

가장 자주 밟는 함정은 시크릿을 default namespace에만 만들고 앱은 다른 namespace에 있는 경우다. 시크릿은 namespace를 넘지 못한다. Pod에 직접 imagePullSecrets를 걸었는지, 아니면 SA에 걸었는지도 갈라 본다.

노드 레벨로 좁히기

kubelet이 아니라 노드 컨테이너 런타임에서 재현하면 인증/네트워크를 분리할 수 있다.

crictl pull <image>            # 노드에서 직접 — 성공하면 자격증명/네임스페이스 쪽 문제

복구 순서

  1. 이름·태그를 확정한다(가능하면 태그 대신 digest로 고정해 재현성을 높인다).
  2. 인증이면 시크릿의 namespace·타입·연결(Pod/SA)을 맞춘다.
  3. 네트워크면 노드→레지스트리 경로(프록시·방화벽·DNS)를 본다.

이미지 이름이 맞는데도 안 되면 십중팔구 자격증명이 엉뚱한 namespace에 있다는 점만 기억해도 대부분 몇 분 안에 끝난다.

빠른 진단 체크리스트

  • 로그가 아니라 describe Events의 사유 문자열부터 읽는다
  • manifest unknown·not found면 이미지 이름·태그 오타다
  • unauthorized면 imagePullSecret의 namespace·타입·연결을 본다
  • 시크릿이 앱과 같은 namespace에 있는지 먼저 확인한다
  • toomanyrequests면 레지스트리 레이트리밋, 인증·미러로 푼다
  • i/o timeout·no such host면 노드→레지스트리 네트워크·프록시다
  • crictl pull로 노드 레벨에서 재현해 원인을 분리한다
  • 재현성을 위해 태그 대신 digest로 고정한다

연결 허브

같이 보면 좋은 허브

관련 topic, symptom, vendor, certification 허브로 바로 이동할 수 있습니다.

cluster-networking-and-service-discovery

cluster-networking-and-service-discovery landing page grouping K8s troubleshooting searches around Fresh Record, Stale Resolver, cluster-networking-and-service-discove...

Rollout Stuck

Rollout troubleshooting landing page focused on unhealthy promotions, pending rollout state, blocked approval flow, and release steps that look green until the final h...

Timeouts and Latency

Slow responses, upstream timeout, and network path latency signals. Timeouts and Latency landing page grouping CI/CD troubleshooting searches around Monorepo Triggerin...

Kubernetes

Kubernetes landing page grouping vendor-shaped CI/CD troubleshooting drills around The Sync Plan Was Complete and a Policy Created a New Dependency After the Doors Clo...

CKA

CKA landing page built around CrashLoopBackOff, Service and Endpoint mismatch, image pull failures, and workload recovery order.

연결 가이드

같은 흐름의 가이드를 이어서 보기

같은 검색 의도에 가까운 다른 가이드를 묶어 보여줍니다.

대표 문제

이 가이드와 맞는 문제

가이드에서 읽은 점검 순서를 실제 문제로 연습할 수 있습니다.

다음 단계

가이드 다음으로 이어볼 흐름

허브, 대표 문제, 학습 허브 순서로 검색 흐름을 실제 연습으로 이어보세요.

FAQ

자주 묻는 질문

가이드 적용 전 확인하면 좋은 질문입니다.

ImagePullBackOff에서 먼저 확인할 registry와 Secret에서 가장 먼저 확인할 것은 무엇인가요?

마지막 오류 메시지보다 같은 실패가 반복되는 경계와 최근 변경 내역을 먼저 확인해야 합니다.

기술 용어와 명령어는 번역해야 하나요?

아니요. Kubernetes, Pod, systemd, npm ci, package.json 같은 기술 용어와 명령어는 원문 그대로 두고 설명 문장만 한국어로 정리합니다.

바로 복구 조치를 해도 되나요?

영향 범위와 원인 후보가 좁혀지기 전에는 전체 재시작이나 정책 완화처럼 되돌리기 어려운 조치를 피하는 것이 안전합니다.