kubectl get pods ErrImagePull

4/9/2018

I'm fighting with Kubernetes. I've googled a lot and looked at a few answers such as this one - for example - but can't seem to get it to work.

I've created a docker container and push to local registry:

sudo docker run -d -p 5000:5000 --name registry registry:2
sudo docker tag i-a/i-a:latest localhost:5000/i-a
sudo docker push localhost:5000/i-a

The last command gives:

The push refers to a repository [localhost:5000/i-a]
e0a33c56cca0: Pushed 
54ab83ede54d: Pushed 
f5a58f369605: Pushed 
cd7100a72410: Pushed 
latest: digest: sha256:0f30cdf6b4a4e0e382a6cae50c1325103c3b987d9e51c42edea2244a82ae1331 size: 1164

Doing sudo docker pull localhost:5000/i-a gives:

Using default tag: latest
latest: Pulling from i-a
Digest: sha256:0f30cdf6b4a4e0e382a6cae50c1325103c3b987d9e51c42edea2244a82ae1331
Status: Image is up to date for localhost:5000/i-a:latest

The config file i-a.yaml:

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    run: i-a
  name: i-a
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      run: i-a
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        run: i-a
    spec:
      containers:
      - image: localhost:5000/i-a
        imagePullPolicy: IfNotPresent
        name: i-a
        ports:
        - containerPort: 8090
      dnsPolicy: ClusterFirst
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  labels:
    run: i-a
  name: i-a
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8090
  selector:
    run: i-a
  sessionAffinity: None
  type: ClusterIP

When I do sudo kubectl get pods --all-namespaces I get:

...
default       i-a-3400848339-0x6c9   0/1       ImagePullBackOff   0          13m
default       i-a-3400848339-7ltp1   0/1       ImagePullBackOff   0          13m
default       i-a-3400848339-wv092   0/1       ImagePullBackOff   0          13m

The ImagePullBackOff turns to ErrImagePull.

When I run kubectl describe pod i-a-3400848339-0x6c9 I get an error Failed to pull image "localhost:5000/i-a": Error while pulling image: Get http://localhost:5000/v1/repositories/i-a/images: dial tcp 127.0.0.1:5000: getsockopt: connection refused:

Name:       i-a-3400848339-0x6c9
Namespace:  default
Node:       minikube/192.168.99.100
Start Time: Mon, 09 Apr 2018 21:11:15 +0200
Labels:     pod-template-hash=3400848339
        run=i-a
Status:     Pending
IP:     172.17.0.7
Controllers:    ReplicaSet/i-a-3400848339
Containers:
  i-a:
    Container ID:                  
    Image:      localhost:5000/i-a
    Image ID:       
    Port:       8090/TCP
    State:      Waiting
      Reason:       ImagePullBackOff
    Ready:      False
    Restart Count:  0
    Volume Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-bmwkd (ro)
    Environment Variables:  <none>
Conditions:
  Type      Status
  Initialized   True 
  Ready     False 
  PodScheduled  True 
Volumes:
  default-token-bmwkd:
    Type:   Secret (a volume populated by a Secret)
    SecretName: default-token-bmwkd
QoS Class:  BestEffort
Tolerations:    <none>
Events:
  FirstSeen LastSeen    Count   From            SubobjectPath               Type        Reason      Message
  --------- --------    -----   ----            -------------               --------    ------      -------
  18m       18m     1   {default-scheduler }                        Normal      Scheduled   Successfully assigned i-a-3400848339-0x6c9 to minikube
  18m       2m      8   {kubelet minikube}  spec.containers{i-a}    Normal      Pulling     pulling image "localhost:5000/i-a"
  18m       2m      8   {kubelet minikube}  spec.containers{i-a}    Warning     Failed      Failed to pull image "localhost:5000/i-a": Error while pulling image: Get http://localhost:5000/v1/repositories/i-a/images: dial tcp 127.0.0.1:5000: getsockopt: connection refused
  18m       2m      8   {kubelet minikube}                      Warning     FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "i-a" with ErrImagePull: "Error while pulling image: Get http://localhost:5000/v1/repositories/i-a/images: dial tcp 127.0.0.1:5000: getsockopt: connection refused"

  18m   13s 75  {kubelet minikube}  spec.containers{i-a}    Normal  BackOff     Back-off pulling image "localhost:5000/i-a"
  18m   13s 75  {kubelet minikube}                      Warning FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "i-a" with ImagePullBackOff: "Back-off pulling image \"localhost:5000/i-a\""

I'm not sure where to look next... (I get 404 when I browse to http://localhost:5000/v1/repositories/i-a/images)

-- TungstenX
docker
kubernetes
minikube

1 Answer

4/10/2018

Try with:

spec:
      containers:
      - image: localhost:5000/i-a
        imagePullPolicy: Never
        name: i-a
        ports:
        - containerPort: 8090
      dnsPolicy: ClusterFirst
      restartPolicy: Always
-- Nicola Ben
Source: StackOverflow