使用docker离线安装K3S,从私有镜像仓库拉取不到镜像

环境信息:
K3s 版本:
v1.28.15+k3s1

节点 CPU 架构、操作系统和版本::
Linux k3s01 5.10.134-13.an8.x86_64 #1 SMP Mon Jan 9 10:39:46 CST 2023 x86_64 x86_64 x86_64 GNU/Linux

问题描述:
docker的配置文件已添加上私有仓库地址,并重启
/etc/docker/daemon.json
{
“registry-mirrors”: [“http://registry.itxx.local:5000”],
“insecure-registries”: [“registry.itxx.local:5000”]
}
启动k3s后,pod的状态都是ContainerCreating

查看日志提示是没有认证,需要配置什么
Error response from daemon: Head “http://registry.itxx.local:5000/v2/rancher/mirrored-pause/manifests/3.6”: no basic auth credentials

你直接使用 docker 能拉下来镜像么?

直接docker pull registry.itxx.local:5000/rancher/xxxx 可以拉取下来。linux上执行过docker login

你把你的K3s 安装命令发出来

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC=‘server --cluster-init --docker --system-default-registry=registry.itxx.local:5000’ ./install.sh

看你的命令,你使用的也是 docker 容器运行时,但是理论上,你使用 docker 容器运行时的话,相关镜像仓库的配置都是交给docker 去配置的,和 K3s 就没关系了。

你可以在使用 kubectl get node 来确认适应的是否为 docker 容器运行时。

然后在 docker 上拉取一个 pod 中报错的镜像,确认下。

手动执行docker pull拉取镜像,k3s就可以启动成功了,kubectl describe pod的输出如下:

什么意思?到底解决没?

没解决,手动执行docker pull拉取镜像,可以正常运行k3s。但期望的不是手动拉取镜像,而是安装k3s时,自动从从docker私有镜像仓库拉取镜像,报错信息就是上面的图。
Error response from daemon: Head “http://registry.aisino.local:5000/v2/rancher/mirrored-pause/manifests/3.6”: no basic auth credentials

在本地测试,如果使用 docker 作为容易运行时,需要将私有镜像仓库的认证去掉,改成公开的