事象
複数ノードの環境でDeploymentを起動するもpodが以下エラーで起動しない。
kubectl get pod NAME READY STATUS ... nginx-xx 0/1 ErrImageNeverPull
尚、ローカルのImageから取得するために以下を記載している。
imagePullPolicy: Never
環境情報
- kubectl v1.15.1
原因/対応策
Pod起動先のWorkerNodeに該当のイメージがない。
よって共用レジストリーに配置してイメージを指定するかWorkerNodeにイメージを展開する。
以下、解説です。
解説
YAMLファイルに「imagePullPolicy: IfNotPresent」や「imagePullPolicy: Never」を記載した場合はローカルにあるイメージからPodを展開します。
ここで、イメージを以下のように記載しているとPodが展開されているNodeのイメージを探しに行きます。
image: nginx
つまりDockerDesktopのようなMasterとWorkerが同一であれば起きにくい事象ですが、MasterとWorkerが分かれている場合は注意が必要です。
具体的には起動に失敗しているPodの展開先をkubectl get pod -o=wide
で確認し、そのNodeにイメージを配置する必要があります。イメージの移動は以下を参考ください。
以上、同様の事象の方の参考になれば幸いです。