199

突然、以前はデプロイできた一部のイメージをデプロイできなくなりました。次のポッド ステータスを取得しました。

[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 

アプリケーションが起動しません。Pod はコンテナーを実行しようとしていません。イベントページから、 を手に入れBack-off pulling image "172.30.84.25:5000/default/arix@sha256:d326ました。のタグで画像をプルできることを確認しましたdocker pull

最後のコンテナのログも確認しました。なぜか閉鎖されていました。ポッドは少なくとも再起動を試みる必要があると思います。

問題をデバッグするためのアイデアが不足しています。さらに何を確認できますか?

4

12 に答える 12

205

「 describe pod」構文を使用できます

OpenShift を使用する場合:

oc describe pod <pod-id>  

バニラ Kubernetes の場合:

kubectl describe pod <pod-id>  

出力のイベントを調べます。私の場合、それは示していますBack-off pulling image unreachableserver/nginx:1.14.22222

この場合、unreachableserver/nginx:1.14.22222Docker レジストリー unreachableserver が存在せず、イメージが存在しないため、イメージをインターネットから取得できnginx:1.14.22222ません。

注: 関心のあるイベントが表示されず、ポッドがしばらくの間 (60 分以上のように見える) 'ImagePullBackOff' ステータスになっている場合は、ポッドを削除して、新しいポッドからイベントを確認する必要があります。

OpenShift を使用する場合:

oc delete pod <pod-id>
oc get pods
oc get pod <new-pod-id>

バニラ Kubernetes の場合:

kubectl delete pod <pod-id>  
kubectl get pods
kubectl get pod <new-pod-id>

出力例:

  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  32s                default-scheduler  Successfully assigned rk/nginx-deployment-6c879b5f64-2xrmt to aks-agentpool-x
  Normal   Pulling    17s (x2 over 30s)  kubelet            Pulling image "unreachableserver/nginx:1.14.22222"
  Warning  Failed     16s (x2 over 29s)  kubelet            Failed to pull image "unreachableserver/nginx:1.14.22222": rpc error: code = Unknown desc = Error response from daemon: pull access denied for unreachableserver/nginx, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
  Warning  Failed     16s (x2 over 29s)  kubelet            Error: ErrImagePull
  Normal   BackOff    5s (x2 over 28s)   kubelet            Back-off pulling image "unreachableserver/nginx:1.14.22222"
  Warning  Failed     5s (x2 over 28s)   kubelet            Error: ImagePullBackOff

追加のデバッグ手順

  1. コンピューターで docker イメージとタグを手動でプルしてみてください
  2. 「kubectl/oc get pods -o wide」を実行してノードを特定します
  3. docker イメージをプルできないノード (可能であれば) に ssh します。
  4. ping を実行して、ノードが docker レジストリーの DNS を解決できることを確認します。
  5. ノードでdockerイメージを手動でプルしてみてください
  6. プライベート レジストリを使用している場合は、シークレットが存在し、シークレットが正しいことを確認してください。シークレットも同じ名前空間にある必要があります。ありがとうスヴェンゼル
  7. 一部のレジストリには、IP アドレス アクセスを制限するファイアウォールがあります。ファイアウォールがプルをブロックする可能性があります
  8. 一部の CI は、一時的な Docker シークレットを使用してデプロイを作成します。したがって、シークレットは数日後に期限切れになります (生産の失敗を求めています...)
于 2017-05-24T06:40:15.343 に答える
3

私も似たような状況に直面し、Docker Desktop の実現によりサインアウトしたことが判明しました。再度サインインした後、すべてが再び正常に機能しました。

于 2021-01-13T10:38:01.977 に答える
2

編集して何が問題なのかを確認してください (画像の場所が間違っていました):

kubectl edit pods arix-3-yjq9w

または、ポッドを削除することもできます:

kubectl delete arix-3-yjq9w
于 2016-10-12T12:48:39.257 に答える