在openEuler 20.03 aarch64上,用Podman搞定Ceph Reef离线部署的完整避坑记录

发布时间:2026/5/18 22:50:23

在openEuler 20.03 aarch64上,用Podman搞定Ceph Reef离线部署的完整避坑记录 在openEuler 20.03 aarch64上实现Ceph Reef离线部署的全栈指南当企业需要在严格的内网环境中部署分布式存储系统时Ceph Reefv18.2.0结合openEuler和Podman的技术栈成为ARM架构下的理想选择。本文将深入探讨在鲲鹏服务器上如何克服无外网访问的限制从零构建完整的Ceph存储集群。1. 环境准备与架构设计在开始部署之前需要明确离线环境的核心挑战镜像获取、依赖管理和配置同步。典型的部署架构包含三个角色节点可扩展其中至少一个节点需要临时具备外网访问能力以完成初始镜像拉取。关键准备工作清单确认所有节点已安装openEuler 20.03 (LTS-SP2) aarch64版本确保Podman已正确安装并配置sudo dnf install -y podman systemctl enable --now podman规划私有Registry的部署节点建议选择未来将作为集群管理节点的服务器准备至少100GB的磁盘空间用于存储容器镜像注意虽然本文以三节点为例但所有配置方法均适用于更大规模的集群部署。实际存储容量需求需根据业务数据量评估。2. 构建私有容器Registry在离线环境中私有Registry是容器化部署的生命线。我们选择使用Podman部署标准的Registry v2镜像这将成为整个集群的镜像分发中心。详细配置步骤在有外网访问权限的节点上拉取基础镜像podman pull registry:2创建持久化存储目录并启动Registry服务mkdir -p /var/lib/registry podman run --privileged -d --name registry \ -p 5000:5000 \ -v /var/lib/registry:/var/lib/registry \ --restartalways registry:2配置防火墙规则允许Registry端口访问firewall-cmd --permanent --add-port5000/tcp firewall-cmd --reload关键配置文件/etc/containers/registries.conf的优化建议[registries.insecure] registries [10.2.1.176:5000] # 替换为实际Registry节点IP [registries.search] registries [10.2.1.176:5000]此配置需同步到所有集群节点确保各节点都能正确访问私有Registryfor node in ceph-191 ceph-219; do scp /etc/containers/registries.conf $node:/etc/containers/ done3. Ceph Reef核心组件镜像处理Ceph Reef的离线部署需要准备完整的镜像集合包括监控、日志等配套组件。通过分析cephadm脚本我们可以获取完整的依赖镜像列表。镜像获取与处理流程拉取所有必需镜像在有外网的节点执行declare -a IMAGES( quay.io/ceph/ceph:v18.2.0 quay.io/prometheus/prometheus:v2.43.0 docker.io/grafana/loki:2.4.0 quay.io/prometheus/node-exporter:v1.5.0 # 其他镜像... ) for image in ${IMAGES[]}; do podman pull $image done将镜像打包为离线文件mkdir -p ~/ceph-offline-images for image in ${IMAGES[]}; do output_name$(echo $image | sed s/[\/:]/-/g).tar podman save -o ~/ceph-offline-images/$output_name $image done将镜像导入私有Registryfor image in ${IMAGES[]}; do local_name10.2.1.176:5000/${image} podman tag $image $local_name podman push $local_name done版本兼容性检查表组件推荐版本验证方式Cephv18.2.0cephadm脚本内嵌Prometheusv2.43.0与Ceph监控兼容Grafana9.4.7专用Ceph定制版4. 集群初始化与节点扩展在镜像准备就绪后即可开始集群的初始化工作。这个阶段需要特别注意cephadm工具的版本匹配问题。安全可靠的集群引导方法从容器中提取匹配版本的cephadmpodman run --rm quay.io/ceph/ceph:v18.2.0 cat /usr/sbin/cephadm /usr/local/sbin/cephadm chmod x /usr/local/sbin/cephadm使用私有Registry引导集群cephadm bootstrap \ --mon-ip 10.2.1.176 \ --registry-url 10.2.1.176:5000 \ --registry-json {url:10.2.1.176:5000,insecure:true}添加额外节点到集群ceph orch host add ceph-191 10.2.1.191 ceph orch host add ceph-219 10.2.1.219常见问题解决指南镜像拉取失败检查registries.conf是否已同步到所有节点确认防火墙规则版本不匹配确保从相同版本的Ceph容器中提取cephadm工具证书问题在严格安全环境中可能需要额外配置Registry证书5. 存储服务部署与优化集群就绪后需要根据实际业务需求配置不同的存储服务。以下以最常见的OSD部署为例OSD部署的最佳实践识别可用设备ceph orch device ls批量创建OSD示例为每节点4个OSDfor host in ceph-176 ceph-191 ceph-219; do ceph orch daemon add osd $host:/dev/sdb ceph orch daemon add osd $host:/dev/sdc # 其他设备... done验证集群健康状态watch ceph -s性能调优参数参考osd_memory_target: 4GB # 根据实际内存调整 osd_op_num_threads_per_shard: 2 osd_recovery_sleep: 0.16. 监控与日志系统集成完整的生产环境需要监控和日志系统的支持。Ceph Reef默认集成了以下组件监控栈部署流程启用监控模块ceph mgr module enable prometheus ceph mgr module enable dashboard部署监控组件ceph orch apply prometheus ceph orch apply grafana ceph orch apply alertmanager配置日志聚合ceph orch apply loki ceph orch apply promtail访问信息获取方式ceph mgr services输出示例{ dashboard: https://ceph-176:8443, prometheus: http://ceph-176:9090, grafana: http://ceph-176:3000 }在部署过程中发现使用IP地址而非主机名注册服务可以避免内网DNS解析问题。各节点的/etc/hosts文件需要保持同步这是离线环境中常被忽视的关键细节。

相关新闻