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