갑자기 이전에 배포 할 수 있었던 일부 이미지를 배포 할 수 없습니다. 다음 포드 상태를 얻었습니다.
[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\""
추가 디버깅 단계
- 컴퓨터에서 Docker 이미지를 가져오고 수동으로 태그를 지정하십시오.
- ‘kubectl / oc get pods -o wide’를 수행하여 노드를 식별합니다.
- Docker 이미지를 가져올 수없는 노드 (가능한 경우)로 ssh
- 노드가 ping을 수행하여 docker 레지스트리의 DNS를 확인할 수 있는지 확인하십시오.
- 노드에서 Docker 이미지를 수동으로 가져 오십시오.
- 개인 레지스트리를 사용하는 경우 비밀 이 존재하고 비밀이 올바른지 확인하십시오. 암호도 동일한 네임 스페이스에 있어야합니다. 감사합니다 swenzel
- 일부 레지스트리에는 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 푸시되었는지 확인해야합니다!
답변
비슷한 문제에 직면했지만 하나 대신 모든 포드가 준비되지 않았고 준비 상태 0/1을 표시합니다.
많은 것을 시도했지만 마침내 컨텍스트가 올바르게 설정되지 않았 음을 발견했습니다. 다음 명령을 사용하고 올바른 컨텍스트에 있는지 확인하십시오.
kubectl config get-contexts
답변
GKE에서 포드가 작동하지 않으면 이벤트를 확인하는 것이 가장 좋습니다. 오류가 무엇인지 자세히 보여줍니다.
제 경우에는 다음과 같습니다.
Failed to pull image "gcr.io/project/imagename@sha256:c8e91af54fc17faa1c49e2a05def5cbabf8f0a67fc558eb6cbca138061a8400a":
rpc error: code = Unknown desc = error pulling image configuration: unknown blob
어떻게 든 이미지가 손상된 것으로 나타났습니다. 이를 거부하고 새 해시로 배포 한 후 다시 작동했습니다.
답변
Docker 로그인 실행
이미지를 Docker 허브로 푸시
포드 다시 만들기
이것은 나를 위해 문제를 해결했습니다. 도움이되기를 바랍니다.