✅ Rook-Ceph는 Kubernetes 환경에서 Ceph 스토리지 클러스터를 쉽게 배포하고 관리할 수 있게 해주는 오픈소스 프로젝트입니다. 그러나 때로는 Rook Ceph 클러스터를 완전히 삭제하고 새로 구축해야 하는 상황이 발생할 수 있습니다. 이 경우 다음과 같은 단계 별 초기화 과정을 거치면 됩니다.
1. 설정 파일 삭제
☑️ Rook Ceph 클러스터와 관련된 모든 설정 파일을 제거합니다. 이를 통해 이전 클러스터의 흔적을 완전히 지울 수 있습니다.
rm -rf /var/lib/rook
2. CRD(Custom Resource Definition) 삭제
☑️ Rook Ceph 클러스터에서 사용되는 CRD를 삭제합니다. CRD는 Kubernetes API의 확장 기능으로, Rook이 Ceph 클러스터를 관리하는 데 사용됩니다. 이 과정을 통해 이전 클러스터의 모든 리소스를 제거할 수 있습니다.
$ 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": []}}'
done
$ kubectl api-resources --verbs=list --namespaced -o name \
| xargs -n 1 kubectl get --show-kind --ignore-not-found -n rook-ceph
3. Finalizer 설정을 통한 Resource 삭제
☑️ Finalizer는 Kubernetes 리소스 삭제 시 추가 작업을 수행할 수 있게 해주는 기능입니다. 이를 활용하여 Rook Ceph 클러스터와 관련된 리소스를 안전하게 삭제할 수 있습니다.
$ 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": []}}'
4. Ceph OSD Disk 초기화
☑️ Ceph 클러스터의 OSD(Object Storage Daemon) 디스크를 초기화합니다. 이 과정을 통해 이전 클러스터의 데이터를 완전히 삭제할 수 있습니다.
DISK="/dev/sdb"
$ sgdisk --zap-all $DISK
$ dd if=/dev/zero of="$DISK" bs=1M count=100 oflag=direct,dsync
$ blkdiscard $DISK
$ partprobe $DISK
이와 같은 단계를 거치면 Rook Ceph 클러스터를 완전히 삭제하고 새로 구축할 수 있습니다.
이번에는 Rook-Ceph 클러스터 초기화 하는 법에 알아 봤습니다. 설치를 구성하다 보면 이런 저런 오류가 생기거나 또는 기존 클러스터를 없애고 다시 설치 하는 경우가 발생할 수 도 있습니다. 이런 경우 사용하시면 용이 할 것 같습니다.
이상으로 글을 마치도록 하겠습니다. 감사합니다.