How to retry image pull in a kubernetes Pods?

DockerKubernetesCoreos

Docker Problem Overview


I am new to kubernetes. I have an issue in the pods. When I run the command

 kubectl get pods

Result:

NAME                   READY     STATUS             RESTARTS   AGE
mysql-apim-db-1viwg    1/1       Running            1          20h
mysql-govdb-qioee      1/1       Running            1          20h
mysql-userdb-l8q8c     1/1       Running            0          20h
wso2am-default-813fy   0/1       ImagePullBackOff   0          20h

Due to an issue of "wso2am-default-813fy" node, I need to restart it. Any suggestion?

Docker Solutions


Solution 1 - Docker

In case of not having the yaml file:

kubectl get pod PODNAME -n NAMESPACE -o yaml | kubectl replace --force -f -

Solution 2 - Docker

Usually in case of "ImagePullBackOff" it's retried after few seconds/minutes. In case you want to try again manually you can delete the old pod and recreate the pod. The one line command to delete and recreate the pod would be:

kubectl replace --force -f <yml_file_describing_pod>

Solution 3 - Docker

$ kubectl replace --force -f <resource-file>

if all goes well, you should see something like:

<resource-type> <resource-name> deleted
<resource-type> <resource-name> replaced

details of this can be found in the Kubernetes documentation, "manage-deployment" and kubectl-cheatsheet pages at the time of writing.

Solution 4 - Docker

If the Pod is part of a Deployment or Service, deleting it will restart the Pod and, potentially, place it onto another node:

$ kubectl delete po $POD_NAME

replace it if it's an individual Pod:

$ kubectl get po -n $namespace $POD_NAME -o yaml | kubectl replace -f -

Solution 5 - Docker

Try with deleting pod it will try to pull image again.

kubectl delete pod <pod_name> -n <namespace_name>

Solution 6 - Docker

First try to see what's wrong with the pod:

kubectl logs -p <your_pod>

In my case it was a problem with the YAML file.

So, I needed to correct the configuration file and replace it:

kubectl replace --force -f <yml_file_describing_pod>

Solution 7 - Docker

Most probably the issue of ImagePullBackOff is due to either the image not being present or issue with the pod YAML file.

What I will do is this

kubectl get pod -n $namespace $POD_NAME --export > pod.yaml | kubectl -f apply -

I would also see the pod.yaml to see the why the earlier pod didn't work

Solution 8 - Docker

There is also possibility that the pull policy is not defined or kubernetes is configured to pull from the hub but fails due network issues. Try setting up a local secure registry and execute a pull . It would work.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDilshani SubasingheView Question on Stackoverflow
Solution 1 - DockerMaciek SawickiView Answer on Stackoverflow
Solution 2 - DockerAyon NahiyanView Answer on Stackoverflow
Solution 3 - DockereversMccView Answer on Stackoverflow
Solution 4 - DockerCarlos NunezView Answer on Stackoverflow
Solution 5 - DockerSachin AroteView Answer on Stackoverflow
Solution 6 - DockeredubriguentiView Answer on Stackoverflow
Solution 7 - DockerAnkur KothariView Answer on Stackoverflow
Solution 8 - DockersandyView Answer on Stackoverflow