Rodr
Rodr

Reputation: 51

Kubernetes doesn't recognises local docker image

I have the following deployment and i use the image:flaskapp1:latest

    apiVersion: apps/v1
kind: Deployment
metadata:
  name: flaskapp
  labels:
    app: flaskapp
spec:
  selector:
    matchLabels:
      app: flaskapp
  replicas: 1
  template:
    metadata:
      labels:
        app: flaskapp
    spec:
      containers:
      - name: flaskapp
        image: flaskapp1:latest
        imagePullPolicy: IfNotPresent
        ports:
          - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: flaskapp
spec:
  ports:
  - name: http
    port: 9090
    targetPort: 8080
  selector:
    app: flaskapp

Because the kubernetes cluster that i have created has only 2 nodes(master node and worker node) the pod is created in worker node where i have locally created the docker image. More specific if i run

sudo docker images

I have the follwing output:

REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
flaskapp1     latest    4004bc4ea926   34 minutes ago   932MB

For some reason when i apply the deployment above the status is ErrImagePull. Is there any wrong in my yaml file?

When i run kubectl get pods -o wide i have the following output:

NAME                           READY   STATUS             RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
flaskapp-55dbdfd6cf-952v8      0/1     ImagePullBackOff   0          7m44s   192.168.69.220   knode2   <none>           <none>

Also

Upvotes: 2

Views: 2170

Answers (1)

Thomas
Thomas

Reputation: 12009

Glad, that it works now, but I would like to add some information for others, that might encounter this problem.

In general use a real registry to provide the images. This can be hosted using kubernetes as well, but it must be accessible from outside since the nodes will access it directly to retrieve images. You should provide TLS secured access to the registry since container runtimes will not allow access to external hosts without a certificate or special configuration.

If you want to experiment with images and don't want to use a public registry or run your own you might be interested in an ephemeral registry: https://ttl.sh/

Upvotes: 5

Related Questions