Skip to content

2. cephadm 部署实战

本章目标

  • 用 cephadm 从零部署一个可用的实验集群
  • 理解 bootstrap 做了什么、host/OSD 的编排模型
  • 部署后立刻建立健康基线

2.1 cephadm 是什么

cephadm 是 Ceph 官方的部署与生命周期管理工具:所有守护进程跑在容器里,用 MGR 内置的 orchestrator(ceph orch 子命令)管理"哪个服务跑在哪个节点"。对比旧时代的 ceph-deploy(裸进程、SSH 分发):

  • 依赖收敛:只要求节点有容器运行时 + SSH
  • 声明式:ceph orch apply mon: 3ceph orch apply osd --all-available-devices
  • 升级、扩容、换盘全部统一到 ceph orch

坑位预警(来自实战手册):不要提前创建 ceph 用户,否则安装包的 post-install 脚本会失败。让 cephadm 自己管理。

2.2 网络规划先行

部署前先定两个网段(对照全局拓扑的实践):

网络用途实践
public network客户端 ↔ 集群、MON 通信必须所有节点互通
cluster networkOSD 间副本/恢复流量生产强烈建议独立;实验环境可省略
text
示例(实战手册的划分方式):
管理角色节点(前 3 台):跑 MON/MGR,只接 public 网
存储节点:每台有 public IP + cluster IP
        dn-* = 访问/客户端节点    sn-* = 存储节点

cluster 网络独立的价值在 第 1 章的延迟账里算过:副本流量是客户端流量的 (副本数-1) 倍,混跑会互相挤兑。rook 指南同理:只有一条网就删掉 network 配置,两条网务必分开设置 public/cluster 网段。

2.3 部署六步

以下为骨架命令,完整分步(hosts 配置、容器运行时、镜像源)见 k8s-in-action/storage/cephadm

bash
# 0. 前置:所有节点 /etc/hosts 互通 + 容器运行时就绪 + SSH 免密(手册用 pdsh/pdcp 批量分发)

# 1. 在第一个管理节点上引导集群
cephadm bootstrap --mon-ip <本机public-IP>
#    做了什么:起第一个 MON + MGR,生成集群密钥与 ceph.keyring,
#    输出 dashboard 地址与初始密码 —— 存下来

# 2. 把其余节点纳入管理
ceph orch host add <host1> <ip> --labels admin   # 可选:更多管理节点
ceph orch host add <sn-1> <ip>                    # 存储节点

# 3. 指定 mon/mgr 规模(奇数个 mon,通常 3)
ceph orch apply mon: 3
ceph orch apply mgr: 2

# 4. 上 OSD:所有可用裸盘自动纳入(实验环境最快)
ceph orch apply osd --all-available-devices
#    生产环境建议用 drivegroup 精确控制(见手册)

# 5. 盯到健康
watch -n2 'ceph -s'
#    HEALTH_OK + 所有 OSD up/in + PG 全部 active+clean

# 6. 基线存档(呼应第一篇方法论:没有基线就没有异常)
ceph -s > baseline-ceph-s.txt
ceph osd df > baseline-osd-df.txt
ceph df > baseline-ceph-df.txt

常见卡点速查:

现象原因处置
bootstrap 卡在拉镜像默认源在国外--image 指定国内镜像(手册里有镜像配置章节)
host add 报错SSH/hosts/时间不同步逐项检查 ssh 主机名 date 一致性
OSD 不上线盘有残留分区/被占用lsblk 检查;ceph-volume lvm zap/sgdisk --zap-all 抹除(rook 手册的销毁段同款)
时钟偏移告警chrony 未对齐ceph health detail 会点名节点,修 NTP

2.4 dashboard 与第一批用户

bash
ceph mgr module enable dashboard   # bootstrap 后通常已启用
# 忘记密码:ceph dashboard set-login-credentials <user>

dashboard 能看:集群健康、OSD/PG 分布、容量水位、性能曲线。但它只是观测窗,生产变更一律走 CLI/编排 —— 这是 rook 手册里"用 rook 管理、dashboard 只当 GUI"的同一条原则。

2.5 部署完成的自检清单

  • [ ] ceph -s:HEALTH_OK,mon 3 个,osd 全部 up/in
  • [ ] ceph osd tree:OSD 按 host 正确分层(crush 拓扑正确)
  • [ ] ceph osd df:每 OSD 使用率方差小(数据分布均匀)
  • [ ] 时间同步无告警;public/cluster 网络按规划路由
  • [ ] 基线三件套已存档

本章小结

  • cephadm = 容器化守护进程 + ceph orch 声明式编排
  • 网络先行:public 必备,cluster 网络生产强烈建议独立
  • 部署六步:bootstrap → host add → mon/mgr → osd → 盯 HEALTH_OK → 存基线
  • 卡点集中在:镜像源、SSH/时间、盘残留 —— 都有固定解法

自测

Quizcephadm bootstrap 之后,集群里最先存在的守护进程是?
Quiz实验中 `ceph orch apply osd --all-available-devices` 后,某节点的盘没变成 OSD。最不可能的原因是?
🧪Lab · 部署你的第一个 Ceph 集群进阶
⏱ 2 小时🖥 ≥3 台 Linux(每台至少 1 块空数据盘)
1. 按 k8s-in-action 的 cephadm 指南完成 bootstrap、host add、mon:3、OSD 上线。 2. 验证 `ceph -s` 为 HEALTH_OK;`ceph osd tree` 确认 host 分层正确。 3. 登录 dashboard,截图容量/性能首页作为基线;同时存档三件套命令输出。 4. 断开一台存储节点的网络 2 分钟再恢复,观察 `ceph -s` 从降级到自愈的全过程,记录恢复耗时。 5. **验收标准**:能口头复述 bootstrap→HEALTH_OK 每一步做了什么;降级告警出现在哪个字段、自愈经过哪几个状态(degraded → recovering → clean)。
📎 参考手册 ↗

上一章 · 下一章:3. 块存储 RBD →