ceph容器删除mgr后,编排器ceph orch ps仍能看到,且删不掉
ceph config-key ls | grep mgr查看是否存在一些keys导致是否无法删除
1. 删除与问题 MGR 相关的配置键
# 删除当前配置中的残留项
ceph config-key rm config/mgr.ceph01.akvucq/container_image
# 删除配置历史中的残留项
ceph config-key rm config-history/35/+mgr.ceph01.akvucq/container_image
ceph config-key rm config-history/36/+mgr.ceph01.akvucq/container_image
ceph config-key rm config-history/36/-mgr.ceph01.akvucq/container_image
ceph config-key rm config-history/38/-mgr.ceph01.akvucq/container_image
ceph config-key rm config-history/59/+mgr.ceph01.akvucq/container_image
ceph config-key rm config-history/61/+mgr.ceph01.akvucq/container_image
ceph config-key rm config-history/61/-mgr.ceph01.akvucq/container_image
ceph config-key rm config-history/62/+mgr.ceph01.akvucq/container_image
ceph config-key rm config-history/62/-mgr.ceph01.akvucq/container_image
2. 检查并清理编排器守护进程数据库
# 检查编排器守护进程列表
ceph config-key get mgr/cephadm/daemons
# 如果返回 JSON 数据,查找并删除 mgr.ceph01.akvucq 条目
# 或者直接导出、编辑、重新导入
ceph config-key get mgr/cephadm/daemons > daemons_backup.json
3. 如果有守护进程列表,手动编辑它
# 如果 daemons_backup.json 文件存在且包含该守护进程
# 使用编辑器删除相关条目,然后重新导入
vi daemons_backup.json
# 删除所有包含 "mgr.ceph01.akvucq" 的行
ceph config-key set mgr/cephadm/daemons -i daemons_backup.json
4. 重启编排器模块以刷新状态
# 重启编排器模块
ceph mgr module disable cephadm
sleep 10
ceph mgr module enable cephadm
# 等待重新初始化
sleep 30
5. 验证清理结果
# 检查是否还有残留的配置键
ceph config-key ls | grep mgr.ceph01.akvucq
# 检查编排器守护进程状态
ceph orch ps --daemon_type mgr
# 检查集群状态
ceph -s
6. 重新部署 MGR 服务
# 重新应用 MGR 服务配置
ceph orch apply mgr --placement="ceph01,ceph02"
# 或者重新部署
ceph orch redeploy mgr
7. 最终验证
# 等待几分钟后检查
ceph orch ps
ceph mgr stat
ceph -s
如果上述步骤执行成功,停止的 MGR 记录应该从 ceph orch ps 的输出中消失,并且会在 ceph01 节点上启动一个新的 MGR 实例。
执行完后,ceph orch ps还是显示mgr stop存在
继续执行ceph config-key dump | grep mgr.ceph01.akvucq
返回很多,按照如下步骤清理完了后,重启编排器好了
完美!现在我们找到了问题的根源。mgr.ceph01.akvucq 守护进程记录仍然存在于编排器的内部数据库中(mgr/cephadm/host.ceph01 键中),并且还有大量的崩溃记录。让我们手动清理这些残留记录:
1. 备份当前状态
# 备份当前的编排器数据库
ceph config-key get mgr/cephadm/host.ceph01 > host_ceph01_backup.json
2. 手动编辑编排器数据库
我们需要从编排器数据库中移除 mgr.ceph01.akvucq 的记录:
# 获取当前 host.ceph01 的配置
ceph config-key get mgr/cephadm/host.ceph01 > host_ceph01_modified.json
# 编辑这个 JSON 文件,删除 mgr.ceph01.akvucq 相关的条目
# 使用文本编辑器编辑,或者使用 jq 工具
3. 使用 jq 工具清理 JSON(推荐)
# 安装 jq(如果还没有)
apt-get install jq -y || yum install jq -y
# 从 host.ceph01 配置中删除 mgr.ceph01.akvucq
ceph config-key get mgr/cephadm/host.ceph01 | jq '
del(.daemons."mgr.ceph01.akvucq") |
del(.daemon_config_deps."mgr.ceph01.akvucq") |
del(.scheduled_daemon_actions."mgr.ceph01.akvucq")
' > host_ceph01_cleaned.json
# 验证清理结果
cat host_ceph01_cleaned.json | jq '.daemons | keys' | grep mgr.ceph01.akvucq
4. 更新编排器数据库
# 将清理后的配置写回数据库
ceph config-key set mgr/cephadm/host.ceph01 -i host_ceph01_cleaned.json
5. 清理崩溃记录
# 删除所有与 mgr.ceph01.akvucq 相关的崩溃记录
ceph config-key rm "mgr/crash/crash/2025-11-17T03:39:58.316289Z_70a8799c-7491-475c-a1d4-e69f4656bc71"
ceph config-key rm "mgr/crash/crash/2025-11-19T02:48:06.864102Z_23611b49-bd3d-4d4d-bb99-b24c913aad74"
ceph config-key rm "mgr/crash/crash/2025-11-19T09:14:07.852930Z_e7dc8202-9fc3-452f-b3ee-ff0e0548cf38"
ceph config-key rm "mgr/crash/crash/2025-11-19T09:43:22.526179Z_81d02f0f-327e-40ca-9441-65cf2b255c2e"
ceph config-key rm "mgr/crash/crash/2025-11-19T09:55:12.378225Z_23ecc546-54f4-4abe-8220-e6d28f78a90f"
ceph config-key rm "mgr/crash/crash/2025-11-19T09:56:13.391851Z_273c8826-179c-46ac-9bd1-48bd7ae3c8bf"
ceph config-key rm "mgr/crash/crash/2025-11-19T09:58:36.031922Z_71e7a521-c4ee-4d28-bebf-99bbe2e3e731"
ceph config-key rm "mgr/crash/crash/2025-11-19T10:00:54.632703Z_0d5498c8-6042-4d2a-9e95-4d9a147e874e"
ceph config-key rm "mgr/crash/crash/2025-11-19T10:10:39.243800Z_127f4273-bfb8-440e-955f-007c73e6431f"
ceph config-key rm "mgr/crash/crash/2025-11-19T10:15:55.742762Z_beef7aef-0c6f-47b8-924b-36f14d7155f2"
ceph config-key rm "mgr/crash/crash/2025-11-19T10:21:00.270263Z_5ae0ca88-d3b3-4060-9f8b-1512b300c008"
ceph config-key rm "mgr/crash/crash/2025-11-19T10:31:35.672491Z_e208b67c-c7a6-4eb5-b745-d3d18bbb193f"
6. 清理其他残留配置
# 清理配置历史中的残留
ceph config-key rm "config-history/35/+mgr.ceph01.akvucq/container_image"
ceph config-key rm "config-history/36/+mgr.ceph01.akvucq/container_image"
ceph config-key rm "config-history/36/-mgr.ceph01.akvucq/container_image"
ceph config-key rm "config-history/38/-mgr.ceph01.akvucq/container_image"
ceph config-key rm "config-history/59/+mgr.ceph01.akvucq/container_image"
ceph config-key rm "config-history/61/+mgr.ceph01.akvucq/container_image"
ceph config-key rm "config-history/61/-mgr.ceph01.akvucq/container_image"
ceph config-key rm "config-history/62/+mgr.ceph01.akvucq/container_image"
ceph config-key rm "config-history/62/-mgr.ceph01.akvucq/container_image"
# 清理当前配置
ceph config-key rm "config/mgr.ceph01.akvucq/container_image"
7. 重启编排器模块
# 重启编排器以刷新状态
ceph mgr module disable cephadm
sleep 10
ceph mgr module enable cephadm
sleep 30
8. 重新部署 MGR 服务
# 重新应用 MGR 配置
ceph orch apply mgr --placement="ceph01,ceph02"
# 或者重新部署
ceph orch redeploy mgr
9. 验证修复结果
# 检查守护进程状态
ceph orch ps --daemon_type mgr
# 检查编排器数据库是否还有残留
ceph config-key dump | grep mgr.ceph01.akvucq
# 检查集群状态
ceph -s
ceph mgr stat
10. 如果仍然有问题,强制刷新
# 如果问题仍然存在,可以尝试重启活跃的 MGR
systemctl restart ceph-mgr@$(ceph mgr stat | grep -o '"name":"[^"]*' | cut -d'"' -f4).service
# 或者在 ceph01 上重启 ceph 服务
ssh ceph01 systemctl restart ceph.target
请按照这个顺序执行。最关键的是步骤 3 和 4,它们会从编排器内部数据库中移除残留的守护进程记录。执行完成后,停止的 MGR 记录应该会从 ceph orch ps 的输出中消失,并且系统会在 ceph01 上启动一个新的 MGR 实例。
如果遇到任何权限问题或错误,请告诉我具体的错误信息。

浙公网安备 33010602011771号