<p>I am creating a pod from an image which resides on the master node. When I create a pod on the master node to be scheduled on the worker node, I get the status of pod ErrImageNeverPull</p>
<pre><code>kind: Pod
metadata:
   name: cloud-pipe
   labels:
      app: cloud-pipe
spec:
   containers:
     - name: cloud-pipe
       image: cloud-pipeline:latest
       command: [&quot;sleep&quot;]
       args: [&quot;infinity&quot;]
</code></pre>
<p>Kubectl describe pod details:</p>
<pre><code>   Type     Reason             Age                   From               Message
   - ---     ------             ----                  ----               -------   
    Normal   Scheduled          15m                   default-scheduler  Successfully assigned 
    default/cloud-pipe to knode
    Warning  ErrImageNeverPull  5m54s (x49 over 16m)  kubelet            Container image &quot;cloud- 
    pipeline:latest&quot; is not present with pull policy of Never
    Warning  Failed             51s (x72 over 16m)    kubelet            Error: ErrImageNeverPull
</code></pre>
<p>How to resolve this issue. Also, my question is does Kubernetes by default looks on the worker node for the image to exist?. Thanks</p>

Mazia
<p>When kubernetes creates containers, it first looks to local images, and then will try registry(docker registry by default)</p>
<p>You are getting this error because:</p>
<ul>
<li><p>your image cant be found localy on your node.</p>
</li>
<li><p>you specified <code>imagePullPolicy: Never</code>, so you will never try to download image from registry</p>
</li>
</ul>
<p>You have few ways of resolving this, but all of them generally instruct you to get image locally and tag it properly.</p>
<p>To get image on your node you can:</p>
<ul>
<li><p><a href="https://stackoverflow.com/questions/23935141/how-to-copy-docker-images-from-one-host-to-another-without-using-a-repository">copy images from one node to another</a></p>
</li>
<li><p>build image from existing Dockerfile</p>
</li>
</ul>
<p>Once you get image, tag it and specify in the deployment</p>
<pre><code>docker tag cloud-pipeline:latest mytest:mytest

kind: Pod
metadata:
   name: cloud-pipe
   labels:
      app: cloud-pipe
spec:
   containers:
     - name: cloud-pipe
       image: mytest:mytest
       imagePullPolicy: Never
       command: [&quot;sleep&quot;]
       args: [&quot;infinity&quot;]
</code></pre>
<p>Or you can configure own local registry, push tagged image into it, and use <code>imagePullPolicy: IfNotPresent</code>. More information in @dryairship <a href="https://stackoverflow.com/a/59269154/9929015">answer</a></p>
<p>Also please be sure using <code>eval $(minikube docker-env)</code> for <code>imagePullPolicy: Never</code>  images, in case you are using minikube (you havent specified any tag, but it can be helpful). More information in <a href="https://stackoverflow.com/questions/56392041/getting-errimageneverpull-in-pods">Getting “ErrImageNeverPull” in pods</a> question</p>
