Pat Res
Pat Res

Reputation: 97

Minikube: unable to pull image from DockerHub (public repo)

I'm sporting a fresh Minikube install on an ArchLinux box, using Docker as the Minikube driver.

I started the minikube "cluster" using the minikube start command. docker container ls tells us it's up and running:

CONTAINER ID   IMAGE                                 COMMAND                  CREATED          STATUS          PORTS                                                                                                                                  NAMES
d86070af0c21   gcr.io/k8s-minikube/kicbase:v0.0.28   "/usr/local/bin/entr…"   50 minutes ago   Up 50 minutes   127.0.0.1:49162->22/tcp, 127.0.0.1:49161->2376/tcp, 127.0.0.1:49160->5000/tcp, 127.0.0.1:49159->8443/tcp, 127.0.0.1:49158->32443/tcp   minikube

I'm trying to run a simple nginx pod, using this command: kubectl run my-nginx --image nginx

Since I'm pulling a public image from a public repo, I would expect I don't need any authentication. But the describe pod sub-command shows:

Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  47s                default-scheduler  Successfully assigned default/my-nginx to minikube
  Normal   BackOff    31s                kubelet            Back-off pulling image "nginx"
  Warning  Failed     31s                kubelet            Error: ImagePullBackOff
  Normal   Pulling    19s (x2 over 46s)  kubelet            Pulling image "nginx"
  Warning  Failed     4s (x2 over 31s)   kubelet            Failed to pull image "nginx": rpc error: code = Unknown desc = Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  Warning  Failed     4s (x2 over 31s)   kubelet            Error: ErrImagePull

When I try to curl the URL found in the error message from inside the minikube container, it shows that authentication is needed:

patres@arch:~$ minikube ssh                                                                        

docker@minikube:~$ curl https://registry-1.docker.io/v2/
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}

When I try to pull that very image from host using docker pull nginx command, the image gets pulled, no auth required.

I also tried to create a kubernetes secret this way, then launching the pod using YAML with that secret, but it was to no avail.

kubectl create secret docker-registry regcred --docker-server=https://registry-1.docker.io/v2/ --docker-username=myusername --docker-password=mypass [email protected]

Finally, it seems like the issue might not be unique to DockerHub, since if I follow the official minikubes documentation and launch the default hello-minikube deployment:

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4

I get the same ImagePullBackOff error:

$ kubectl get pod hello-minikube-6ddfcc9757-zdzz2                                           
NAME                              READY   STATUS             RESTARTS   AGE
hello-minikube-6ddfcc9757-zdzz2   0/1     ImagePullBackOff   0          6m11s

Upvotes: 6

Views: 5797

Answers (2)

Salman Ahmed
Salman Ahmed

Reputation: 46

This may not be the right way or the solution to do things, but here is what worked for me..

minikube cache add <dockerhub username>/<repo name>:<version optional>

This worked on localhost as I had the docker image on my local machine. Ofcourse all the configurations were in my .yml files with imagePullPolicy: IfNotPresent. So it did not pull the image if it was not present. But we are not exactly trying to achieve that. The correct solution would require the kubernetes to pull the image each time the service is restarted

Upvotes: 0

Pat Res
Pat Res

Reputation: 97

The problem got resolved by one of these actions (not sure by which exactly):

  • terminating my VPN connection
  • deleting the minikube container and image
  • rebooting my computer
  • starting anew with minikube start

Upvotes: 1

Related Questions