制作部署镜像

在部署容器中安装各个RPM软件包,制作最小规格镜像。

  1. 进入部署容器。

    1
    podman exec -it openeuler2203sp4_release /bin/bash
    

  2. 安装UCX包。

    1
    2
    cd /home/local_rpm
    yum install ucx-1.14.1-1.aarch64.rpm ucx-cma-1.14.1-1.aarch64.rpm ucx-debuginfo-1.14.1-1.aarch64.rpm ucx-debugsource-1.14.1-1.aarch64.rpm ucx-devel-1.14.1-1.aarch64.rpm ucx-ib-1.14.1-1.aarch64.rpm ucx-rdmacm-1.14.1-1.aarch64.rpm ucx-static-1.14.1-1.aarch64.rpm -y
    

    只使能SPDK则跳过此步骤。

  3. 安装Ceph依赖包。

    1
    2
    3
    yum install python-asyncssh-help-2.7.0-2.noarch.rpm python3-asyncssh-2.7.0-2.noarch.rpm python3-natsort-8.4.0-3.noarch.rpm -y
    pip3 install kubernetes==18.20.0
    pip install pycryptodome==3.19.1
    
    • 为了避免Python三方库pycryptodome版本太低导致部署失败,建议升级如下依赖包。
      1
      pip install pycryptodome==3.19.1
      
    • 为了避免部署MGR报错No module named 'kubernetes.client.models.v1_event',需安装如下版本依赖包。
      1
      pip3 install kubernetes==18.20.0
      

  4. Ceph 17.2.8+openEuler-22.03-LTS-SP3场景下安装Ceph前需先安装依赖包selinux-policy。

    • 依赖包获取参见步骤 7
    • 部署Ceph17.2.7版本时,仅openEuler-22.03-LTS-SP3及以下的操作系统版本需要安装selinux-policy包。openEuler-22.03-LTS-SP4可跳过本步骤。
    1
    yum install noarch/selinux-policy-35.5-23.noarch.rpm noarch/selinux-policy-devel-35.5-23.noarch.rpm noarch/selinux-policy-help-35.5-23.noarch.rpm noarch/selinux-policy-minimum-35.5-23.noarch.rpm noarch/selinux-policy-mls-35.5-23.noarch.rpm noarch/selinux-policy-sandbox-35.5-23.noarch.rpm noarch/selinux-policy-targeted-35.5-23.noarch.rpm -y
    

  5. 安装Ceph。

    1
    2
    3
    yum install aarch64/ceph-17.2.7-0.aarch64.rpm aarch64/ceph-base-17.2.7-0.aarch64.rpm aarch64/ceph-common-17.2.7-0.aarch64.rpm aarch64/ceph-debugsource-17.2.7-0.aarch64.rpm aarch64/ceph-exporter-17.2.7-0.aarch64.rpm aarch64/ceph-fuse-17.2.7-0.aarch64.rpm aarch64/ceph-immutable-object-cache-17.2.7-0.aarch64.rpm aarch64/ceph-mds-17.2.7-0.aarch64.rpm aarch64/ceph-mgr-17.2.7-0.aarch64.rpm aarch64/ceph-mon-17.2.7-0.aarch64.rpm aarch64/ceph-osd-17.2.7-0.aarch64.rpm aarch64/ceph-radosgw-17.2.7-0.aarch64.rpm aarch64/ceph-selinux-17.2.7-0.aarch64.rpm aarch64/ceph-test-17.2.7-0.aarch64.rpm aarch64/cephfs-java-17.2.7-0.aarch64.rpm aarch64/cephfs-mirror-17.2.7-0.aarch64.rpm aarch64/libcephfs-devel-17.2.7-0.aarch64.rpm aarch64/libcephfs2-17.2.7-0.aarch64.rpm aarch64/libcephfs_jni-devel-17.2.7-0.aarch64.rpm aarch64/libcephfs_jni1-17.2.7-0.aarch64.rpm aarch64/libcephsqlite-17.2.7-0.aarch64.rpm aarch64/libcephsqlite-devel-17.2.7-0.aarch64.rpm aarch64/librados-devel-17.2.7-0.aarch64.rpm aarch64/librados2-17.2.7-0.aarch64.rpm aarch64/libradospp-devel-17.2.7-0.aarch64.rpm aarch64/libradosstriper-devel-17.2.7-0.aarch64.rpm aarch64/libradosstriper1-17.2.7-0.aarch64.rpm aarch64/librbd-devel-17.2.7-0.aarch64.rpm aarch64/librbd1-17.2.7-0.aarch64.rpm aarch64/librgw-devel-17.2.7-0.aarch64.rpm aarch64/librgw2-17.2.7-0.aarch64.rpm aarch64/python3-ceph-argparse-17.2.7-0.aarch64.rpm aarch64/python3-ceph-common-17.2.7-0.aarch64.rpm aarch64/python3-cephfs-17.2.7-0.aarch64.rpm aarch64/python3-rados-17.2.7-0.aarch64.rpm aarch64/python3-rbd-17.2.7-0.aarch64.rpm aarch64/python3-rgw-17.2.7-0.aarch64.rpm aarch64/rados-objclass-devel-17.2.7-0.aarch64.rpm aarch64/rbd-fuse-17.2.7-0.aarch64.rpm aarch64/rbd-mirror-17.2.7-0.aarch64.rpm aarch64/rbd-nbd-17.2.7-0.aarch64.rpm noarch/ceph-grafana-dashboards-17.2.7-0.noarch.rpm noarch/ceph-mgr-cephadm-17.2.7-0.noarch.rpm noarch/ceph-mgr-dashboard-17.2.7-0.noarch.rpm noarch/ceph-mgr-diskprediction-local-17.2.7-0.noarch.rpm noarch/ceph-mgr-k8sevents-17.2.7-0.noarch.rpm noarch/ceph-mgr-modules-core-17.2.7-0.noarch.rpm noarch/ceph-mgr-rook-17.2.7-0.noarch.rpm noarch/ceph-prometheus-alerts-17.2.7-0.noarch.rpm noarch/ceph-resource-agents-17.2.7-0.noarch.rpm noarch/ceph-volume-17.2.7-0.noarch.rpm noarch/cephadm-17.2.7-0.noarch.rpm noarch/cephfs-top-17.2.7-0.noarch.rpm -y
    
    yum install chrony haproxy keepalived -y
    

  6. 安装KSAL闭源算法包。

    1
    2
    3
    cd /home
    unzip BoostKit-KSAL_1.10.0.zip
    rpm -ivh libksal-release-1.10.0.oe1.aarch64.rpm
    

    KSAL软件包获取请参见获取软件包,建议上传到“/home”目录下。

  7. SPDK需要使用用户态大页内存,因此需要给ceph-osd提权。

    1
    setcap 'CAP_DAC_OVERRIDE+eip CAP_SYS_ADMIN+eip' /usr/bin/ceph-osd
    

  8. 修改Ceph用户登录配置。

    1. 打开passwd文件。
      1
      vim /etc/passwd
      
    2. “i”进入编辑模式,将Ceph的登录shell修改为“/bin/bash”

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

  9. 配置用户资源限制(使能UCX需要)。

    1. 打开limits.conf文件。
      1
      vim /etc/security/limits.conf
      
    2. “i”进入编辑模式,在文件尾部新增如下内容。
      1
      2
      3
      4
      5
      6
      * soft nofile 1048576
      * hard nofile 1048576
      * soft nproc unlimited
      * hard nproc unlimited
      * soft memlock unlimited
      * hard memlock unlimited
      
    3. “Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。

  10. 在物理机上将容器提交成镜像。

    1
    podman commit 688247c8b260 [IP]:5000/ceph/ceph_release:v17.2.7
    
    • 688247c8b260为openeuler2203sp4_release容器对应的容器ID(通过podman ps查看)。
    • [IP]为实际本机IP地址。
    • 执行commit动作前,可以将“/home”目录下已安装的RPM包删除,以精简镜像大小。

  11. 将部署镜像导出。

    1
    podman save -o ceph_release.tar a6e8aff2def8
    

    a6e8aff2def8为10中提交的镜像对应的ID,通过podman images查看。