Failed to pull image pull access denied , repository does not exist or may require 'docker login':

7/20/2021

I've created my own image just called v2 but when I do kubectl get pods, it keeps erroring out...with Failed to pull image "v2": rpc error: code = Unknown desc = Error response from daemon: pull access denied for v2, repository does not exist or may require 'docker login': denied: requested access to the resource is denied I'm using minukube by the way

This is my deployment file, also called v2.yaml

apiVersion: v1
kind: Service
metadata:
  name: v2
spec:
  selector:
    name: v2
  ports:
    - port: 8080
      targetPort: 80
---
# ... Deployment YAML definition
apiVersion: apps/v1
kind: Deployment
metadata:
  name: v2
spec:
  replicas: 1
  selector:
    matchLabels:
      name: v2
  template:
    metadata:
      labels:
        name: v2
    spec:
      containers:
        - name: v2
          image: v2
          ports:
            - containerPort: 80
          imagePullPolicy: IfNotPresent
---
# ... Ingress YAML definition
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: v2
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - http:
        paths:
          - path: /second
            pathType: Prefix
            backend:
              service:
                name: v2
                port:
                  number: 8080

any help gratefully received

-- Mick8695
docker
kubernetes

2 Answers

7/20/2021

As the error message indicate v2, repository does not exist it is because of image: v2 . there is no image available in docker hub with name v2. if it is in your repository on docker hub then mention it in the form <reponame>/v2.

-- confused genius
Source: StackOverflow

7/20/2021

My suspicion is that you have built your container image against your local Docker daemon, rather than minikube's. Hence, because your imagePullPolicy is set to IfNotPresent, the node will try pulling it from Docker hub (the default container registry).

You can run minikube ssh to open a shell and then run docker image ls to verify the image is not present in the minikube Docker daemon.

The solution here is to first run the following command from your local shell (i.e. not the one in minikube):

$ eval $(minikube -p minikube docker-env)

It will set up your current shell to use minikube's docker daemon. After that, in the same shell, rebuild your image. Now when minikube tries pulling the image, it should find it and bring up the pod successfully.

-- Emile Pels
Source: StackOverflow