How to fix ErrImageNeverPull: Container image is not present with pull policy of Never in Kubernetes

KubernetesBEGINNERMEDIUMUpdated Dec 6, 2025· 216 views

ErrImageNeverPull occurs when imagePullPolicy is set to Never but the required image does not exist locally on the node. Load the image into your cluster or change the pull policy.

Quick fix

Fixes ErrImageNeverPull: Container image is not present with pull policy of Never

minikube ssh docker images
  1. Verify the image exists locally on the node
  2. Load the image into Minikube
  3. Load the image into Kind
  4. Ensure exact image name match
kubernetes — error
minikube ssh docker images
ErrImageNeverPull: Container image is not present with pull policy of Never

What this error means

ErrImageNeverPull indicates that a pod's container image is not available in the local container runtime, and the imagePullPolicy is set to Never, which prevents Kubernetes from attempting to pull it from a registry. This policy is commonly used in local development environments like Minikube or Kind where you want to use locally-built images. However, if the image isn't properly loaded into the cluster's container runtime or the image name doesn't match exactly, this error occurs.

Typical symptoms

  • Pod status shows ErrImageNeverPull or Init:ErrImageNeverPull
  • Events show Container image is not present with pull policy of Never
  • Pods remain stuck and never transition to Running state
  • Locally built images work with docker run but fail in Kubernetes
  • CI/CD pipelines fail at pod startup in local clusters
  • Deployments cannot progress and show unavailable replicas

Common causes

  1. Image was built locally but not loaded into the Kubernetes cluster runtime
  2. Image name in pod spec does not exactly match the local image name including tag
  3. Using Kind or Minikube but image exists only in host Docker daemon
  4. Image exists on one node but pod scheduled to a different node
  5. Missing registry prefix causing mismatch (docker.io/library/ vs bare name)
  6. Image was pruned or removed from node local storage

How to fix "ErrImageNeverPull: Container image is not present with pull policy of Never"

1Verify the image exists locally on the node

Check what images are available in the cluster. For Minikube:

bash
minikube ssh docker images

For Kind, exec into the control plane node:

bash
docker exec -it kind-control-plane crictl images

Look for your image with the exact name and tag specified in your pod spec.

2Load the image into Minikube

If using Minikube, load your local image:

bash
minikube image load myapp:latest

Or build directly in Minikube's Docker environment:

bash
eval $(minikube docker-env)
docker build -t myapp:latest .

Note: Don't use sudo with docker commands after running eval—it breaks the environment.

3Load the image into Kind

For Kind clusters, use the kind load command:

bash
kind load docker-image myapp:latest

For multi-node Kind clusters, load to specific nodes or all nodes:

bash
kind load docker-image myapp:latest --nodes kind-worker,kind-worker2

Verify it loaded: docker exec kind-control-plane crictl images | grep myapp

4Ensure exact image name match

The image reference must match exactly. Common mismatches:

yaml
# If you built as 'myapp:v1', use exactly that
image: myapp:v1  # Correct
image: myapp     # Wrong - defaults to :latest
image: docker.io/library/myapp:v1  # May not match

Check your local image name:

bash
docker images myapp
5Consider using IfNotPresent instead of Never

If the strict Never policy isn't required, IfNotPresent is more flexible:

yaml
spec:
  containers:
  - name: myapp
    image: myapp:v1
    imagePullPolicy: IfNotPresent

This uses local images when available but falls back to pulling if missing. Better for development workflows where you might forget to load images.

6For multi-node clusters, use a local registry

In multi-node clusters, imagePullPolicy: Never requires the image on every node. A local registry is more practical:

bash
# Run a local registry
docker run -d -p 5000:5000 --name registry registry:2

# Tag and push your image
docker tag myapp:latest localhost:5000/myapp:latest
docker push localhost:5000/myapp:latest

Then use localhost:5000/myapp:latest in your pod spec with IfNotPresent.

Advanced notes

For k3s clusters, use the fully qualified image path including docker.io/library/ prefix for Docker Hub images, as k3s uses containerd which handles image references differently.

In CI/CD pipelines with local clusters, ensure the image build step completes before the deploy step and that images are loaded into the cluster, not just the build agent's Docker daemon.

For production clusters, avoid imagePullPolicy: Never entirely. Push images to a proper container registry and use IfNotPresent or Always. The Never policy should only be used for local development and testing scenarios.

When using kaniko or buildah for in-cluster builds, images are typically pushed directly to a registry rather than loaded locally, making Never policy inappropriate.

Frequently asked questions

What does "ErrImageNeverPull: Container image is not present with pull policy of" mean?
ErrImageNeverPull indicates that a pod's container image is not available in the local container runtime, and the imagePullPolicy is set to Never, which prevents Kubernetes from attempting to pull it from a registry. This policy is commonly used in local development environments like Minikube or Kind where you want to use locally-built images. However, if the image isn't properly loaded into the cluster's container runtime or the image name doesn't match exactly, this error occurs.
How do I fix "ErrImageNeverPull: Container image is not present with pull policy of"?
ErrImageNeverPull occurs when imagePullPolicy is set to Never but the required image does not exist locally on the node. Load the image into your cluster or change the pull policy.
What causes "ErrImageNeverPull: Container image is not present with pull policy of"?
Image was built locally but not loaded into the Kubernetes cluster runtime Image name in pod spec does not exactly match the local image name including tag Using Kind or Minikube but image exists only in host Docker daemon
Is the "ErrImageNeverPull: Container image is not present with pull policy of" error serious?
It is a medium-severity error — more of a blocker than a risk. The steps above resolve it.

Official resources & further reading