현행 절차는 Rook 문서의 Cleanup 을 따른다 — 2026-09-20 확인. https://rook.io/docs/rook/latest/Storage-Configuration/ceph-teardown/ . 순서는 CephCluster 에
cleanupPolicy.confirmation: yes-really-destroy-data를 넣고 → 앱 PVC · StorageClass 삭제 → CephCluster 삭제 → operator · common · crds 삭제 → 호스트/var/lib/rook와 디스크 정리다.
kubectl delete -n rook-ceph cephblockpool replicapool
# 안 지워질 경우
kubectl edit -n rook-ceph cephblockpool replicapool
- finalizers 부분 삭제
kubectl delete storageclass rook-ceph-block
kubectl -n rook-ceph patch cephcluster rook-ceph --type merge -p '{"spec":{"cleanupPolicy":{"confirmation":"yes-really-destroy-data"}}}'
kubectl -n rook-ceph delete cephcluster rook-ceph
# 안 지워질 경우
kubectl edit -n rook-ceph cephcluster rook-ceph
finalizers:
- cephcluster.ceph.rook.io
finalizers:
각 노드 /var/lib/rook으로 가서 지워줌.
rm -rf /var/lib/rook/*
kubectl delete -f operator.yaml
configmap "rook-ceph-operator-config" deleted
deployment.apps "rook-ceph-operator" deleted
kubectl delete -f common.yaml
kubectl delete -f crds.yaml
customresourcedefinition.apiextensions.k8s.io "cephblockpools.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephbucketnotifications.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephbuckettopics.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephclients.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephclusters.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephfilesystemmirrors.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephfilesystems.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephnfses.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephobjectrealms.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephobjectstores.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephobjectstoreusers.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephobjectzonegroups.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephobjectzones.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "cephrbdmirrors.ceph.rook.io" deleted
customresourcedefinition.apiextensions.k8s.io "objectbucketclaims.objectbucket.io" deleted
customresourcedefinition.apiextensions.k8s.io "objectbuckets.objectbucket.io" deleted
$ lsblk -f | grep ceph_bluestore
sdy ceph_bluestore
sdz ceph_bluestore
sdaa ceph_bluestore
sdab ceph_bluestore
sdac ceph_bluestore
sdad ceph_bluestore
sdae ceph_bluestore
sdaf ceph_bluestore
sdag ceph_bluestore
sdah ceph_bluestore
sdai ceph_bluestore
sdaj ceph_bluestore
#!/usr/bin/env bash
DISK="/dev/sdb"
# Zap the disk to a fresh, usable state (zap-all is important, b/c MBR has to be clean)
# You will have to run this step for all disks.
sgdisk --zap-all $DISK
# Clean hdds with dd
dd if=/dev/zero of="$DISK" bs=1M count=100 oflag=direct,dsync
# Clean disks such as ssd with blkdiscard instead of dd
blkdiscard $DISK
# These steps only have to be run once on each node
# If rook sets up osds using ceph-volume, teardown leaves some devices mapped that lock the disks.
ls /dev/mapper/ceph-* | xargs -I% -- dmsetup remove %
# ceph-volume setup can leave ceph-<UUID> directories in /dev and /dev/mapper (unnecessary clutter)
rm -rf /dev/ceph-*
rm -rf /dev/mapper/ceph--*
# Inform the OS of partition table changes
partprobe $DISK
#!/usr/bin/env bash
DISK="/dev/sdb"
# Zap the disk to a fresh, usable state (zap-all is important, b/c MBR has to be clean)
# You will have to run this step for all disks.
sgdisk --zap-all $DISK
# Clean hdds with dd
dd if=/dev/zero of="$DISK" bs=1M count=100 oflag=direct,dsync
# Clean disks such as ssd with blkdiscard instead of dd
blkdiscard $DISK
# These steps only have to be run once on each node
# If rook sets up osds using ceph-volume, teardown leaves some devices mapped that lock the disks.
ls /dev/mapper/ceph-* | xargs -I% -- dmsetup remove %
# ceph-volume setup can leave ceph-<UUID> directories in /dev and /dev/mapper (unnecessary clutter)
rm -rf /dev/ceph-*
rm -rf /dev/mapper/ceph--*
# Inform the OS of partition table changes
partprobe $DISK
sgdisk --zap-all /dev/xvdc
sgdisk --zap-all /dev/xvde
sgdisk --zap-all /dev/xvdf
dd if=/dev/zero of="/dev/xvdc" bs=1M count=100 oflag=direct,dsync
dd if=/dev/zero of="/dev/xvde" bs=1M count=100 oflag=direct,dsync
dd if=/dev/zero of="/dev/xvdf" bs=1M count=100 oflag=direct,dsync
ls /dev/mapper/ceph-* | xargs -I% -- dmsetup remove %
rm -rf /dev/ceph-*
rm -rf /dev/mapper/ceph--*
partprobe /dev/xvdc
partprobe /dev/xvde
partprobe /dev/xvdf
#!/usr/bin/bash
USERID=$(id -u)
if [ "$USERID" -ne 0 ]
then echo "Please run as root"
exit
fi
device=$(lsblk -f | grep ceph | awk '{print $1}')
arr=$(echo $device | tr " " "\n")
# datarootpah delete
rm -rf /var/lib/rook
echo $arr
for i in ${arr}
do
:
DISK="/dev/$i"
# Zap the disk to a fresh, usable state (zap-all is important, b/c MBR has to be clean)
sgdisk --zap-all $DISK
# Wipe a large portion of the beginning of the disk to remove more LVM metadata that may be present
dd if=/dev/zero of="$DISK" bs=1M count=100 oflag=direct,dsync
# SSDs may be better cleaned with blkdiscard instead of dd
#blkdiscard $DISK
# Inform the OS of partition table changes
partprobe $DISK
done
k get all -n rook-ceph
No resources found in rook-ceph namespace.
k get configmap -n rook-ceph
NAME DATA AGE
rook-ceph-mon-endpoints 4 14d
k get sa -n rook-ceph
No resources found in rook-ceph namespace.
k get crds -n rook-ceph
NAME CREATED AT
cephobjectstores.ceph.rook.io 2022-01-04T05:17:03Z
cephobjectstoreusers.ceph.rook.io 2022-01-04T05:17:03Z
objectbucketclaims.objectbucket.io 2022-01-04T05:17:03Z
objectbuckets.objectbucket.io 2022-01-04T05:17:03Z
kubectl -n rook-ceph get cephcluster
error: the server doesn't have a resource type "cephcluster"
k get configmap -n rook-ceph
NAME DATA AGE
rook-ceph-mon-endpoints 4 14d
k edit configmap rook-ceph-mon-endpoints -n rook-ceph
configmap/rook-ceph-mon-endpoints edited
# configmap 안 지워질 시 path 작업 후 다시 삭제
kubectl -n rook-ceph patch configmap rook-ceph-mon-endpoints --type merge -p '{"metadata":{"finalizers": []}}'
k get crds -n rook-ceph
NAME CREATED AT
cephobjectstores.ceph.rook.io 2022-01-04T05:17:03Z
cephobjectstoreusers.ceph.rook.io 2022-01-04T05:17:03Z
objectbucketclaims.objectbucket.io 2022-01-04T05:17:03Z
objectbuckets.objectbucket.io 2022-01-04T05:17:03Z
for CRD in $(kubectl get crd -n rook-ceph | awk '/ceph.rook.io/ {print $1}'); do
kubectl get -n rook-ceph "$CRD" -o name | \
xargs -I {} kubectl patch -n rook-ceph {} --type merge -p '{"metadata":{"finalizers": [null]}}'
done
k edit crds cephobjectstores.ceph.rook.io -n rook-ceph
customresourcedefinition.apiextensions.k8s.io/cephobjectstores.ceph.rook.io edited
k edit crds cephobjectstoreusers.ceph.rook.io -n rook-ceph
customresourcedefinition.apiextensions.k8s.io/cephobjectstoreusers.ceph.rook.io edited
k edit crds objectbucketclaims.objectbucket.io -n rook-ceph
customresourcedefinition.apiextensions.k8s.io/objectbucketclaims.objectbucket.io edited
k edit crds objectbuckets.objectbucket.io -n rook-ceph
customresourcedefinition.apiextensions.k8s.io/objectbuckets.objectbucket.io edited
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n rook-ceph
NAME TYPE DATA AGE
secret/rook-ceph-mon kubernetes.io/rook 4 14d
k get secret -n rook-ceph
NAME TYPE DATA AGE
rook-ceph-mon kubernetes.io/rook 4 14d
k edit secret rook-ceph-mon -n rook-ceph
secret/rook-ceph-mon edited
kubectl -n rook-ceph patch configmap rook-ceph-mon-endpoints --type merge -p '{"metadata":{"finalizers": []}}'
kubectl -n rook-ceph patch secrets rook-ceph-mon --type merge -p '{"metadata":{"finalizers": []}}'
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
xvda 202:0 0 128G 0 disk
├─xvda1 202:1 0 1M 0 part
├─xvda2 202:2 0 1G 0 part /boot
└─xvda3 202:3 0 127G 0 part
└─ubuntu--vg-ubuntu--lv 253:3 0 127G 0 lvm /
xvdb 202:16 0 512G 0 disk
└─xvdb1 202:17 0 512G 0 part /home/hdd
xvdc 202:32 0 1T 0 disk
└─ceph--efe6cbfa--f4c3--49e3--a21f--dea85ab302b0-osd--block--783199fe--2f2f--4f64--a4d5--ba8c99fc75d7
253:2 0 1024G 0 lvm
xvde 202:64 0 1T 0 disk
└─ceph--5958aefb--9beb--44a7--9a35--d44f7c4f892a-osd--block--f3a62228--9bc3--4ab3--a60f--1ce406b85d55
253:1 0 1024G 0 lvm
xvdf 202:80 0 1T 0 disk
└─ceph--422dbcdc--ae4f--4a6b--8bb1--2b6c5737e794-osd--block--62cf14ee--1ef2--4cce--98f0--dfdaffa994bf
253:0 0 1024G 0 lvm