Home > database >  k8s unable to pull image from the local unsecured registry
k8s unable to pull image from the local unsecured registry

Time:09-23

I am doing the CKAD course from the Linux Foundation (LFD259)

In Lab 3.2. (Configure a Local Repository) we spin up a local unsecured registry from which k8s would pull the simple app image. However, I am unable to make it work.

So, before creating the deployment everything seems to be in order:

student@master:~$ curl 10.97.82.186:5000/v2/_catalog
{"repositories":["simpleapp"]}
student@master:~$ k get deploy
NAME       READY   UP-TO-DATE   AVAILABLE   AGE
nginx      1/1     1            1           118m
registry   1/1     1            1           118m
student@master:~$ k get pod
NAME                       READY   STATUS    RESTARTS      AGE
nginx-6488f757bc-cf4q4     1/1     Running   1 (51m ago)   118m
registry-d4cf9fd7d-qj6tn   1/1     Running   1 (51m ago)   118m
student@master:~$ sudo podman images
REPOSITORY                   TAG         IMAGE ID      CREATED      SIZE
localhost/simpleapp          latest      bb19ffc6050a  2 hours ago  943 MB
10.97.82.186:5000/simpleapp  latest      bb19ffc6050a  2 hours ago  943 MB
docker.io/library/python     3           e285995a3494  8 days ago   943 MB
10.97.82.186:5000/tagtest    latest      9c6f07244728  6 weeks ago  5.83 MB
student@master:~$ echo $repo
10.97.82.186:5000
student@master:~$

Let us create the deployment as per the lab instructions:

student@master:~$ k create deployment try1 --image=$repo/simpleapp
deployment.apps/try1 created
student@master:~$ k describe pod try1-5f97db4fb8-j9csw |grep Failed
  Warning  Failed     11s                kubelet            Failed to pull image "10.97.82.186:5000/simpleapp": rpc error: code = Unknown desc = failed to pull and unpack image "10.97.82.186:5000/simpleapp:latest": failed to resolve reference "10.97.82.186:5000/simpleapp:latest": failed to do request: Head https://10.97.82.186:5000/v2/simpleapp/manifests/latest: http: server gave HTTP response to HTTPS client
  Warning  Failed     11s                kubelet            Error: ErrImagePull
  Warning  Failed     10s (x2 over 11s)  kubelet            Error: ImagePullBackOff
student@master:~$

What I find suspicious is the url https://10.97.82.186:5000/v2/simpleapp/manifests/latest - no way https is going to work here.

How do we fix it?

P.S.

Also posted the question here - https://forum.linuxfoundation.org/discussion/862137/k8s-unable-to-pull-image-from-the-local-unsecured-registry

EDIT 1

To work with a local image registry we are instructed to modify the following two files:

/etc/containers/registries.conf.d/registry.conf

student@master:~$ cat /etc/containers/registries.conf.d/registry.conf
[[registry]]
location = "10.97.82.186:5000"
insecure = true
student@master:~$

/etc/containerd/config.toml

student@master:~$ diff -U3 /etc/containerd/config.toml /etc/containerd/config.toml.orig
--- /etc/containerd/config.toml 2022-09-21 21:22:37.032171446  0000
    /etc/containerd/config.toml.orig    2022-09-22 03:35:37.032007211  0000
@@ -152,9  152,6 @@

       [plugins."io.containerd.grpc.v1.cri".registry.mirrors]

-      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."*"]
-        endpoint = ["10.97.82.186:5000"]
-
     [plugins."io.containerd.grpc.v1.cri".x509_key_pair_streaming]
       tls_cert_file = ""
       tls_key_file = ""
student@master:~$

CodePudding user response:

You can try to set "http" protocol explicitly in your endpoint url i.e.

-      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."*"]
-        endpoint = ["http://10.97.82.186:5000"]
  • Related