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"]