ceph容器删除mgr后,编排器ceph orch ps仍能看到,且删不掉

ceph config-key ls | grep mgr查看是否存在一些keys导致是否无法删除

1. 删除与问题 MGR 相关的配置键

bash
# 删除当前配置中的残留项
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. 检查并清理编排器守护进程数据库

bash
# 检查编排器守护进程列表
ceph config-key get mgr/cephadm/daemons

# 如果返回 JSON 数据,查找并删除 mgr.ceph01.akvucq 条目
# 或者直接导出、编辑、重新导入
ceph config-key get mgr/cephadm/daemons > daemons_backup.json

3. 如果有守护进程列表,手动编辑它

bash
# 如果 daemons_backup.json 文件存在且包含该守护进程
# 使用编辑器删除相关条目,然后重新导入
vi daemons_backup.json
# 删除所有包含 "mgr.ceph01.akvucq" 的行

ceph config-key set mgr/cephadm/daemons -i daemons_backup.json

4. 重启编排器模块以刷新状态

bash
# 重启编排器模块
ceph mgr module disable cephadm
sleep 10
ceph mgr module enable cephadm

# 等待重新初始化
sleep 30

5. 验证清理结果

bash
# 检查是否还有残留的配置键
ceph config-key ls | grep mgr.ceph01.akvucq

# 检查编排器守护进程状态
ceph orch ps --daemon_type mgr

# 检查集群状态
ceph -s

6. 重新部署 MGR 服务

bash
# 重新应用 MGR 服务配置
ceph orch apply mgr --placement="ceph01,ceph02"

# 或者重新部署
ceph orch redeploy mgr

7. 最终验证

bash
# 等待几分钟后检查
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. 备份当前状态

bash
# 备份当前的编排器数据库
ceph config-key get mgr/cephadm/host.ceph01 > host_ceph01_backup.json

2. 手动编辑编排器数据库

我们需要从编排器数据库中移除 mgr.ceph01.akvucq 的记录:

bash
# 获取当前 host.ceph01 的配置
ceph config-key get mgr/cephadm/host.ceph01 > host_ceph01_modified.json

# 编辑这个 JSON 文件,删除 mgr.ceph01.akvucq 相关的条目
# 使用文本编辑器编辑,或者使用 jq 工具

3. 使用 jq 工具清理 JSON(推荐)

bash
# 安装 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. 更新编排器数据库

bash
# 将清理后的配置写回数据库
ceph config-key set mgr/cephadm/host.ceph01 -i host_ceph01_cleaned.json

5. 清理崩溃记录

bash
# 删除所有与 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. 清理其他残留配置

bash
# 清理配置历史中的残留
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. 重启编排器模块

bash
# 重启编排器以刷新状态
ceph mgr module disable cephadm
sleep 10
ceph mgr module enable cephadm
sleep 30

8. 重新部署 MGR 服务

bash
# 重新应用 MGR 配置
ceph orch apply mgr --placement="ceph01,ceph02"

# 或者重新部署
ceph orch redeploy mgr

9. 验证修复结果

bash
# 检查守护进程状态
ceph orch ps --daemon_type mgr

# 检查编排器数据库是否还有残留
ceph config-key dump | grep mgr.ceph01.akvucq

# 检查集群状态
ceph -s
ceph mgr stat

10. 如果仍然有问题,强制刷新

bash
# 如果问题仍然存在,可以尝试重启活跃的 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 实例。

如果遇到任何权限问题或错误,请告诉我具体的错误信息。

posted @ 2025-11-19 15:26  mofy  阅读(1)  评论(0)    收藏  举报