Intentando agregar un registro inseguro a la configuración de contenedores como se muestra a continuación:
[plugins."io.containerd.grpc.v1.cri".cni] bin_dir = "/opt/cni/bin" conf_dir = "/etc/cni/net.d" max_conf_num = 1 conf_template = "" [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://registry-1.docker.io"] [plugin."io.containerd.grpc.v1.cri".registry.mirrors."test.http-registry.io"] endpoint = ["http://v048011.dom600.lab:5000"] Incluso después de agregarlo a config.toml , al extraer la imagen del registro inseguro, falla:
sudo ctr image pull v048011.dom600.lab:5000:5000/myjenkins:latest ctr: failed to resolve reference "v048011.dom600.lab:5000/myjenkins:latest": failed to do request: Head https://v048011.dom600.lab:5000:5000/v2/myjenkins/manifests/latest: http: server gave HTTP response to HTTPS client En la docker , podríamos simplemente agregar el insecure registry al archivo daemon.json y la ventana acoplable extraería imágenes de él, ¿cómo puedo lograr lo mismo en el containerd ? Reemplazo de docker como tiempo de ejecución en el clúster k8s.
ctr no lea el archivo de configuración /etc/containerd/config.toml
esta configuración la usa cri , lo que significa que kubectl o crictl la usarían.
el registro de error http: server gave HTTP response to HTTPS client , muestra que el registro está usando http, pero ctr está tratando de conectarlo usando https.
Entonces, si desea extraer la imagen de http, debe agregar el --plain-http con ctr de esta manera:
ctr i pull --plain-http <image>el documento de configuración del registro es: https://github.com/containerd/containerd/blob/master/docs/cri/registry.md
Debería poder extraer la imagen con crictl, recuerde reiniciar containerd.
sudo crictl -r /run/containerd/containerd.sock pull <image> #or config runntime once for all sudo crictl config runtime-endpoint /run/containerd/containerd.sock sudo crictl pull <image>ejemplo de configuración:
# /etc/containerd/config.toml # change <IP>:5000 to your registry url [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."<IP>:5000"] endpoint = ["http://<IP>:5000"] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."<IP>:5000".tls] insecure_skip_verify = trueAgregando la siguiente configuración:
[plugins."io.containerd.grpc.v1.cri".cni] bin_dir = "/opt/cni/bin" conf_dir = "/etc/cni/net.d" max_conf_num = 1 conf_template = "" [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://registry-1.docker.io"] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."test.http-registry.io"] endpoint = ["http://v048011.dom600.lab:5000"] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."test.http-registry.io".tls] insecure_skip_verify = truedebe omitir la verificación de TLS para el registro de prueba. Consulte también la documentación sobre la configuración de la comunicación TLS del registro .
Editar: tenga en cuenta la "s" en los complementos, hay un error tipográfico en su configuración.
Las respuestas de @Blokje5 y @ws_ son correctas. Lo único que no mencionaron es que debe reiniciar su containerd.service a través del comando systemctl restart containerd.service