web-dev-qa-db-ja.com

「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>  

バニラ・クベルネテスの場合:

kubectl describe pod <pod-id>  

出力のイベントを調べます。私の場合、それはを示していますバックオフプルイメージ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. 「kubectl/oc get pods -o wide」を実行してノードを識別します
  2. dockerイメージをプルできないノードにssh
  3. ノードがpingを実行してdockerレジストリのDNSを解決できることを確認します。
  4. ノードでドッカーイメージを手動でプルしようとします
  5. プライベートレジストリを使用している場合、 secret が存在し、シークレットが正しいことを確認してください。あなたの秘密も同じ名前空間にあるべきです。ありがとう swenzel
  6. 画像をローカルにプルしてみてください
62
rjdkolb

何が間違っているかを確認するために編集しようとしましたか(画像の場所が間違っていました)

kubectl edit pods arix-3-yjq9w

またはポッドを削除しますか?

kubectl delete arix-3-yjq9w
2
Clemens Tolboom

1.0.8でタグ付けされたイメージをECR(AWSイメージハブ)にプッシュするのを忘れていました... Helmを使用しており、次の方法でアップグレードする場合:

helm upgrade 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

image:1.0.8がプッシュされることを確認する必要があります!

0
dang