What does Kubernetes Pods `ErrImagePull` means?

10/11/2020

I am at the initial stage of Kubernetes. I've just created a pod using the command:

kubectl apply -f posts.yaml

It returns me the following:

pod/posts created

After that when I run kubectl get pods

I found the result as following:

NAME    READY   STATUS         RESTARTS   AGE
posts   0/1     ErrImagePull   0          2m4s

Here is my posts.yaml file in below:

apiVersion: v1
kind: Pod
metadata:
    name: posts
spec:
    containers:
        - name: posts
          image: bappa/posts:0.0.1
-- Bappa Lenard
docker
kubernetes
microservices

4 Answers

10/11/2020

Basically ErrImagePull means kubernetes is unable to locate the image, bappa/posts:0.0.1 This could either be the registry settings are not correct in the worker nodes or your image name or tags are not correct.

Just like @Henry explained issue a 'kubectl describe pod posts and inspect (and share) the error messages.

-- Anuradha Fernando
Source: StackOverflow

8/1/2021

If you are using private repository you need to be authorized. If you are authorized and you can't reach the repository I think it might be related you using free account on docker hub and you have more private repositories than one which is for free. If you try to push your repository again you should get an error 'denied: requested access to the resource is denied'. If you make your repository public it should solve your issue.

-- dabrowskimarcin
Source: StackOverflow

10/11/2020

This means that kubernetes could not pull the image from the repository. Does the repo maybe need some authorization to allow image pull?

You can do

kubectl describe pod posts

to get some more info.

-- Henry
Source: StackOverflow

10/12/2020

After applying yaml and looking into the kubectl describe pod posts you can clearly see below error:

  Normal   BackOff    21s               kubelet            Back-off pulling image "bappa/posts:0.0.1"
  Warning  Failed     21s               kubelet            Error: ImagePullBackOff
  Normal   Pulling    9s (x2 over 24s)  kubelet            Pulling image "bappa/posts:0.0.1"
  Warning  Failed     8s (x2 over 22s)  kubelet            Failed to pull image "bappa/posts:0.0.1": rpc error: code = Unknown desc = Error response from daemon: pull access denied for bappa/posts, repository does not exist or may require 'docker login'
  Warning  Failed     8s (x2 over 22s)  kubelet            Error: ErrImagePull

Failed to pull image "bappa/posts:0.0.1": rpc error: code = Unknown desc = Error response from daemon: pull access denied for bappa/posts, repository does not exist or may require 'docker login'

That means either you have posts image in your PRIVATE bappa repository, or you use non-exist image at all. So if this is your private repo - you should be authorized.

Maybe you wanted to use cleptes/posts:0.01 ?

apiVersion: v1
kind: Pod
metadata:
    name: posts
spec:
    containers:
        - name: posts
          image: cleptes/posts:0.01

kubectl get pods posts
NAME    READY   STATUS    RESTARTS   AGE
posts   1/1     Running   0          26m10s

kubectl describe pod posts
  Normal  Pulling    20s   kubelet            Pulling image "cleptes/posts:0.01"
  Normal  Pulled     13s   kubelet            Successfully pulled image "cleptes/posts:0.01"
  Normal  Created    13s   kubelet            Created container posts
  Normal  Started    12s   kubelet            Started container posts
-- Vit
Source: StackOverflow