Nice programing

“ImagePullBackOff”를 디버깅하는 방법은 무엇입니까?

nicepro 2020. 11. 15. 11:46
반응형

“ImagePullBackOff”를 디버깅하는 방법은 무엇입니까?


갑자기 이전에 배포 할 수 있었던 일부 이미지를 배포 할 수 없습니다. 다음 포드 상태를 얻었습니다.

[root@webdev2 origin]# oc get pods 
NAME                      READY     STATUS             RESTARTS   AGE 
arix-3-yjq9w              0/1       ImagePullBackOff   0          10m 
docker-registry-2-vqstm   1/1       Running            0          2d 
router-1-kvjxq            1/1       Running            0          2d 

응용 프로그램이 시작되지 않습니다. 포드가 컨테이너를 실행하려고하지 않습니다. 이벤트 페이지에서 Back-off pulling image "172.30.84.25:5000/default/arix@sha256:d326. 을 사용하여 태그를 사용하여 이미지를 가져올 수 있음을 확인했습니다 docker pull.

마지막 컨테이너의 로그도 확인했습니다. 어떤 이유로 폐쇄되었습니다. 포드가 적어도 다시 시작해야한다고 생각합니다.

문제를 디버깅 할 아이디어가 부족합니다. 무엇을 더 확인할 수 있습니까?


' describe pod '구문을 사용할 수 있습니다.

OpenShift의 경우 :

oc describe pod <pod-id>  

바닐라 Kubernetes의 경우 :

kubectl describe pod <pod-id>  

출력의 이벤트를 조사하십시오. 제 경우에는 back-off pull 이미지 coredns / coredns : latest를 보여줍니다 .

이 경우 이미지 coredns / coredns : latest를 인터넷에서 가져올 수 없습니다.

Events:
  FirstSeen LastSeen    Count   From                SubObjectPath           Type        Reason      Message
  --------- --------    -----   ----                -------------           --------    ------      -------
  5m        5m      1   {default-scheduler }                        Normal      Scheduled   Successfully assigned coredns-4224169331-9nhxj to 192.168.122.190
  5m        1m      4   {kubelet 192.168.122.190}   spec.containers{coredns}    Normal      Pulling     pulling image "coredns/coredns:latest"
  4m        26s     4   {kubelet 192.168.122.190}   spec.containers{coredns}    Warning     Failed      Failed to pull image "coredns/coredns:latest": Network timed out while trying to connect to https://index.docker.io/v1/repositories/coredns/coredns/images. You may want to check your internet connection or if you are behind a proxy.
  4m        26s     4   {kubelet 192.168.122.190}                   Warning     FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "coredns" with ErrImagePull: "Network timed out while trying to connect to https://index.docker.io/v1/repositories/coredns/coredns/images. You may want to check your Internet connection or if you are behind a proxy."

  4m    2s  7   {kubelet 192.168.122.190}   spec.containers{coredns}    Normal  BackOff     Back-off pulling image "coredns/coredns:latest"
  4m    2s  7   {kubelet 192.168.122.190}                   Warning FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "coredns" with ImagePullBackOff: "Back-off pulling image \"coredns/coredns:latest\""

추가 디버깅 단계

  1. 도커 이미지를 가져와 컴퓨터에서 수동으로 태그를 시도하십시오.
  2. 'kubectl / oc get pods -o wide'를 수행하여 노드를 식별합니다.
  3. Docker 이미지를 가져올 수없는 노드 (가능한 경우)로 ssh
  4. 노드가 핑을 수행하여 도커 레지스트리의 DNS를 확인할 수 있는지 확인합니다.
  5. 노드에서 수동으로 도커 이미지를 가져 오십시오.
  6. 개인 레지스트리를 사용하는 경우 비밀 이 있고 비밀이 올바른지 확인하십시오. 암호도 동일한 네임 스페이스에 있어야합니다. 감사합니다 swenzel 6 일부 레지스트리에는 IP 주소 액세스를 제한하는 방화벽이 있습니다. 방화벽이 풀을 차단할 수 있습니다.
  7. 일부 CI는 임시 Docker 암호를 사용하여 배포를 만듭니다. 따라서 비밀은 며칠 후에 만료됩니다 (제작 실패를 요청합니다 ...).

무엇이 잘못되었는지 확인하기 위해 편집을 시도 했습니까 (이미지 위치가 잘못되었습니다)

kubectl edit pods arix-3-yjq9w

아니면 포드를 삭제 하시겠습니까?

kubectl delete arix-3-yjq9w

1.0.8 태그가 지정된 이미지를 ECR (AWS 이미지 허브)에 푸시하는 것을 잊었습니다 ... Helm을 사용하고 다음을 통해 업그레이드하는 경우 :

helm 업그레이드 minta-user ./src/services/user/helm-chart

values.yaml 내부의 이미지 태그가 ECR 또는 Docker Hub 등으로 푸시되었는지 확인합니다. 예 : (이것은 내 helm-chart / values.yaml입니다)

replicaCount: 1

image:
   repository:dkr.ecr.us-east-1.amazonaws.com/minta-user
   tag: 1.0.8

이미지가 1.0.8 푸시되었는지 확인해야합니다!


Docker 로그인 실행

이미지를 Docker 허브로 푸시

포드 다시 만들기

이것은 나를 위해 문제를 해결했습니다. 도움이 되었기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/34848422/how-to-debug-imagepullbackoff

반응형