配置本地仓和镜像

Ceph集群启动时,需要动态地从远程仓库拉取镜像。为了方便局域网内集群的正常启动,需要在内网配置镜像仓库,导入之前制作的部署镜像。本节操作均在ceph1节点的物理机上执行。

  1. 拉取registry:2到本地仓。

    1
    podman pull docker.io/library/registry:2
    
    • 若不能访问外网,使用如下方法或手动下载包导入到节点。
      1
      2
      3
      git config --global http.sslVerify false
      git config --global https.sslVerify false
      git clone https://github.com/NotGlop/docker-drag.git
      
    • 启动本地仓:
      1
      podman load -i registry_2.tar
      
    • 如代理上网时不能正常拉取镜像,需检查代理设置方式。Podman依赖环境变量HTTP_PROXY和HTTPS_PROXY进行代理上网。

  2. 修改容器配置文件“/etc/containers/registries.conf”

    1
    2
    3
    4
    5
    unqualified-search-registries = ["[IP]:5000", "quay.io"]
    short-name-mode="enforcing"
    [[registry]]
    location = "[IP]:5000"
    insecure = true
    

    [IP]需要替换为当前节点的实际公共网络IP地址。

  3. 修改本地仓设置。

    1
    2
    mkdir -p /home/registry-data
    podman run -d -p 5000:5000 -v /home/registry-data:/var/lib/registry --restart always --name registry docker.io/library/registry:2
    

    docker.io/library/registry为1配置的镜像仓库实际使用的镜像名称。通过podman images查看。

  4. 导入制作部署镜像中生成的Ceph部署镜像。

    1
    podman load -i ceph_release.tar
    

  5. 镜像重命名并上传到本地仓。

    1
    2
    3
    podman tag 8bbba7d5cc80 [IP]:5000/ceph/ceph_release:v17.2.7
    podman push [IP]:5000/ceph/ceph_release:v17.2.7 [IP]:5000/ceph/ceph_release:v17.2.7
    podman rmi 8bbba7d5cc80
    
    • 8bbba7d5cc80为ceph_release.tar对应的镜像ID,[IP]为本地IP地址,请根据实际情况替换。
    • 若push存在“Gateway Time-out”的报错,需要检查代理是否在配置,如果已配置代理,则需要执行以下命令关闭代理配置。
      1
      2
      unset http_proxy
      unset https_proxy
      
    • push到本地仓之后,可能会与本地仓中的包存在tag冲突,因此需要删除本地的Ceph镜像。

  6. 修改cephadm文件中的DEFAULT_IMAGE。

    1. 打开“/usr/sbin/cephadm”文件。
      1
      vim /usr/sbin/cephadm
      
    2. “i”进入编辑模式,将DEFAULT_IMAGE按照如下所示进行修改。
      DEFAULT_IMAGE = "[IP]:5000/ceph/ceph_release:v17.2.7"

      [IP]需要替换为当前镜像仓库的IP地址。

    3. “Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。

  7. 修改cephadm中创建容器权限。

    1
    if self.privileged 修改为 if self.privileged or not self.privileged
    
    • “/usr/sbin/cephadm”必须拷贝源码中已经合入SPDK patch的cephadm。
    • 该修改行位于run_cmd函数中。
    • 如已执行过2,可跳过本步骤。

  8. 将编译节点的编译容器中打过SPDK patch的“ceph-17.2.7/src/cephadm/cephadm”拷贝到集群ceph1~ceph3,client1~client3节点的所有物理机“/usr/sbin/”目录下。