“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\""
추가 디버깅 단계
- 도커 이미지를 가져와 컴퓨터에서 수동으로 태그를 시도하십시오.
- 'kubectl / oc get pods -o wide'를 수행하여 노드를 식별합니다.
- Docker 이미지를 가져올 수없는 노드 (가능한 경우)로 ssh
- 노드가 핑을 수행하여 도커 레지스트리의 DNS를 확인할 수 있는지 확인합니다.
- 노드에서 수동으로 도커 이미지를 가져 오십시오.
- 개인 레지스트리를 사용하는 경우 비밀 이 있고 비밀이 올바른지 확인하십시오. 암호도 동일한 네임 스페이스에 있어야합니다. 감사합니다 swenzel 6 일부 레지스트리에는 IP 주소 액세스를 제한하는 방화벽이 있습니다. 방화벽이 풀을 차단할 수 있습니다.
- 일부 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
'Nice programing' 카테고리의 다른 글
mingw gcc4.8.1을 사용하여 std :: random_device로 실행할 때마다 동일한 시퀀스를 얻는 이유는 무엇입니까? (0) | 2020.11.15 |
---|---|
배열 객체이지만 기본 클래스로 사용할 수없는 이유는 무엇입니까? (0) | 2020.11.15 |
함수 포인터의 역 참조는 어떻게 발생합니까? (0) | 2020.11.15 |
iPhone / iOS : 우편 번호 용 HTML 5 키보드 제시 (0) | 2020.11.15 |
Android의 ListView에 이미지 목록을 표시하는 방법은 무엇입니까? (0) | 2020.11.15 |