事象
Podの起動に失敗していてoc get event
を見ると「Failed to pull image」としてエラーが出ている。
$ oc get event LAST SEEN TYPE REASON OBJECT MESSAGE ..Normal Scheduled pod/hoge-69676884f8-ssfk9 Successfully assigned xx/hoge-69676884f8-ssfk9 to xx ..Normal AddedInterface pod/hoge-69676884f8-ssfk9 Add eth0 [10.8.0.13/23] ..Normal Pulling pod/hoge-69676884f8-ssfk9 Pulling image "registry.access.redhat.com/.../hoge-apb" ..Warning Failed pod/hoge-69676884f8-ssfk9 Failed to pull image "registry.access.redhat.com/.../hoge-apb": rpc error: code = Unknown desc = Error reading manifest 1 in registry.access.redhat.com/.../hoge-apb: name unknown: Repo not found ...
環境情報
- OpenShift Container Platform 4
原因/解決策
上記の通り「Repo not found」となっているので取得イメージのパスが誤っている。
podman search
でイメージ名を検索し、
$ podman search hoge INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED redhat.com registry.access.redhat.com/../hoge-apb xx... 0 redhat.com registry.access.redhat.com/../hoge-92-rhel7 xx 0 ...
該当するリモートイメージ名がskopeo
コマンドで存在することを確認し
$ skopeo inspect docker://registry.access.redhat.com/../hoge-apb { "Name": "rregistry.access.redhat.com/../hoge-apb", "Digest": "sha256:xxx... ...
YAMLファイルのイメージを修正すると解消した。
以下、補足です。
補足
Podmanのsearchコマンドは以下のファイルに記載のリポジトリーから検索するのでregistriedに値が入っていない場合は注意が必要です。
cat /etc/containers/registries.conf .... [registries.search] registries = ['registry.access.redhat.com', 'registry.redhat.io'] ... [registries.insecure] registries = [] ...
skopeoはリモートレジストリのイメージの詳細が確認でき、尚且コマンドの利用にデーモンを必要としない(PodmanやDockerは必要)というメリットもあります。