2. cephadm 部署实战
本章目标
- 用 cephadm 从零部署一个可用的实验集群
- 理解 bootstrap 做了什么、host/OSD 的编排模型
- 部署后立刻建立健康基线
2.1 cephadm 是什么
cephadm 是 Ceph 官方的部署与生命周期管理工具:所有守护进程跑在容器里,用 MGR 内置的 orchestrator(ceph orch 子命令)管理"哪个服务跑在哪个节点"。对比旧时代的 ceph-deploy(裸进程、SSH 分发):
- 依赖收敛:只要求节点有容器运行时 + SSH
- 声明式:
ceph orch apply mon: 3、ceph orch apply osd --all-available-devices - 升级、扩容、换盘全部统一到
ceph orch
坑位预警(来自实战手册):不要提前创建
ceph用户,否则安装包的 post-install 脚本会失败。让 cephadm 自己管理。
2.2 网络规划先行
部署前先定两个网段(对照全局拓扑的实践):
| 网络 | 用途 | 实践 |
|---|---|---|
| public network | 客户端 ↔ 集群、MON 通信 | 必须所有节点互通 |
| cluster network | OSD 间副本/恢复流量 | 生产强烈建议独立;实验环境可省略 |
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 集群进阶
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)。
📎 参考手册 ↗