可以使用 rook-ceph-purge-osd 作业中的示例自动删除 OSD。 在 osd-purge.yaml 中,将 <OSD-IDs> 更改为要删除的 OSD 的 ID。
step 1. Run the job:
kubectl create -f osd-purge.yaml
step 2.作业完成后,查看日志以确保成功:
kubectl -n rook-ceph logs -l app=rook-ceph-purge-osd
step 3.完成后,您可以删除作业:
kubectl delete -f osd-purge.yaml
手动清除 OSD
如果 OSD 清除作业失败或者您需要对删除进行细粒度控制,以下是可以从工具箱运行的各个命令。
step 1. 如果 Ceph 尚未将 OSD 标记为 out,则将其标记为 out。 这表示 Ceph 开始将那个 OSD 上的数据移动(回填)到另一个 OSD。
ceph osd out osd.<ID>
OSD ID 是 23,这将是 “ceph osd out osd.23”
step 2.等待数据回填到其他 OSD。
当所有 PG 都处于 active+clean 状态时,ceph status 将指示回填已完成。 如果需要,在此之后移除磁盘是安全的。
step 3.从 Ceph 集群中删除 OSD
ceph osd purge <ID> --yes-i-really-mean-it
step 4.验证 OSD 已从 CRUSH 图中的节点移除
ceph osd tree
step 5.删除被 Ceph 视为“可安全销毁”的 OSD
operator可以自动删除被 Ceph 视为“可安全销毁”的 OSD 部署。 完成上述步骤后,OSD 将被视为可以安全移除,因为数据已全部移至其他 OSD。
a. 如果您在集群 CR 中有此设置,这只会由操作员自动完成:“removeOSDsIfOutAndSafeToRemove: true”
b. 否则,您将需要直接删除部署:
kubectl delete deployment -n rook-ceph rook-ceph-osd-<ID>