Docker run 启动 rancher,由于映射数据目录导致 rancher/mirrored-pause 无法拉取

国内网络使用docker部署

docker run -d --restart=unless-stopped --privileged -p 10080:80 -p 10443:443 -e TZ=Asia/Shanghai -e CATTLE_SYSTEM_DEFAULT_REGISTRY=registry.cn-hangzhou.aliyuncs.com -e CATTLE_BOOTSTRAP_PASSWORD=rancher -v /data/rancher:/var/lib/rancher registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.9.0

local集群会报错,并在创建rke2自定义集群时不成功,会卡住。
试了v2.9.0 v2.8.6 v2.8.5都一样的问题


这个问题是由于docker run 的时候映射目录导致。

因为通过 docker run 启动的 Rancher 镜像中内置了 rancher/mirrored-coredns-corednsrancher/mirrored-pause 这两个镜像的 tar 包,这样在离线环境上也能自动启动这两个服务。

但是这两个镜像的离线 tar 包默认存储在了 /var/lib/rancher/k3s/agent/images/k3s-airgap-images.tar

当通过 docker run 来启动 Rancher 时,通过 -v 将 Rancher 的数据目录(/var/lib/rancher) 映射到本地之后,导致了容器中的 /var/lib/rancher 使用的是主机的空目录。也就是说新启动的 Rancher 中缺少了这个离线的 tar 包,而且,CATTLE_SYSTEM_DEFAULT_REGISTRY 对这两个 pod 不生效。现阶段国内网络使用 docker hub 有问题,所以导致了 rancher/mirrored-coredns-corednsrancher/mirrored-pause 拉取失败。

为了解决这个问题,可以:

  1. 取消映射的目录,这样就可以使用容器内置的离线 tar 包启动这两个服务。
  2. 手动从镜像中获取 /var/lib/rancher/k3s/agent/images/k3s-airgap-images.tar,并传到对应目录下,例如:
root@ksd:~# mkdir -p /data/rancher/k3s/agent/images/
root@ksd:~# docker run --rm --entrypoint "" -v $(pwd):/output rancher/rancher:v2.9.0 cp /var/lib/rancher/k3s/agent/images/k3s-airgap-images.tar /output/k3s-airgap-images.tar
root@ksd:~# ls
docker.sh  k3s-airgap-images.tar  snap
root@ksd:~# cp k3s-airgap-images.tar /data/rancher/k3s/agent/images/
root@ksd:~# docker run -d --restart=unless-stopped --privileged \
    -p 10080:80 -p 10443:443  \
    -e CATTLE_SYSTEM_DEFAULT_REGISTRY=registry.cn-hangzhou.aliyuncs.com \
    -e CATTLE_BOOTSTRAP_PASSWORD=rancher \
    -v /data/rancher:/var/lib/rancher \
    registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.9.0
8b62637c72cfb4b3704d5811f8e9bbd37bd05a93c9155465e776b5e0481f5465

从 UI 查看 pod,可查看到 pod 都启动成功:

1 个赞

今天正好遇到这个问题,已经按照大佬的方式,安装成功了。太感谢了!

hello,咨询下,是用的私有 镜像仓库安装的吗

docker环境有配置加速地址,按照官方的回答,不挂载目录是可以成功的,创建集群也正常。

docker环境如何配置加速地址,可以参考我这篇博客:https://4xx.me/archives/1718091616744

挂载目录也是可以的啊

我用的rancher2.7.5 也是报上边的错误,按照您说的步骤,把2.9.0 换成2.7.5执行 不成功 还是报一样的错误,怎么办。



还是报这个错误,怎么解决呢? centos7内核5.4 runcher2.7.5


本地节点全是failed

你得说你的创建步骤是啥

已经被解决,参考的此步骤 Docker run 启动 rancher,由于映射数据目录导致 rancher/mirrored-pause 无法拉取 - Rancher 2.x - Rancher 中文论坛


执行以后还是error

你到已安装应用里看看,如果都成功了,那就没必要在乎这些错误,因为可能是第一次启动的时候失败了,后来尝试之后成功了。


应该是没有成功

右上角切下 namespace,切换到 所有命名空间

点进去看日志

你是升级操作,还是安装?

安装啊

在 ui 上进入 local 的 shell 页面,执行:helm -n cattle-fleet-system history fleet ,查看是否有 pending 状态的,如果有,就用 helm rollback 恢复到上一个可用的版本。