쿠버네티스 Rook-Ceph 분산 스토리지 Helm 설치 및 클러스터

💡 핵심 요약 (Executive Summary)

본 가이드는 쿠버네티스 Helm 패키지 매니저 rook ceph 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.

📑 Table of Contents
Reference & Guidelines (NOTE)

중요 사항:

  • 클러스터의 샘플 매니페스트에서 ‘CephCluster’ 리소스를 사용자 정의해야 합니다.
  • 각 CephCluster는 자체 네임스페이스에 배포되어야 하며 샘플에서는 네임스페이스에 ‘rook-ceph’를 사용합니다.
  • 샘플 매니페스트에서는 ‘rook-ceph’ 네임스페이스에 rook-ceph 연산자도 설치했다고 가정합니다.
  • Helm 차트에는 동일한 네임스페이스에서 CephCluster CRD를 생성하는 데 필요한 모든 RBAC가 포함되어 있습니다.
  • ‘CephCluster’의 클러스터에 추가하는 모든 디스크 장치는 비어 있어야 합니다(파일 시스템 및 파티션이 없어야 함).
rook-ceph-operator
bash
helm repo add rook https://charts.rook.io/release
helm pull rook/rook-ceph --untar
helm install -n rook-ceph rook-ceph . --create-namespace
rook-ceph-cluster
전제조건
  • operator 설치 후 진행
bash
helm pull rook/rook-ceph-cluster --untar
helm install -n rook-ceph rook-ceph-cluster .
설치 완료 확인
bash
kubectl get all -n rook-ceph
>>>
NAME                                                READY   STATUS    RESTARTS   AGE
pod/rook-ceph-operator-fd9bc499d-zr8vc              1/1     Running   0          27m
pod/csi-cephfsplugin-4vg2g                          2/2     Running   0          7m38s
pod/csi-rbdplugin-q7hxn                             2/2     Running   0          7m38s
pod/csi-rbdplugin-provisioner-7879747877-cthpr      5/5     Running   0          7m38s
pod/csi-cephfsplugin-provisioner-674fb56756-h99rw   5/5     Running   0          7m38s

NAME                              DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/csi-cephfsplugin   1         1         1       1            1           <none>          7m38s
daemonset.apps/csi-rbdplugin      1         1         1       1            1           <none>          7m38s

NAME                                           READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/rook-ceph-operator             1/1     1            1           27m
deployment.apps/csi-rbdplugin-provisioner      1/1     1            1           7m39s
deployment.apps/csi-cephfsplugin-provisioner   1/1     1            1           7m39s

NAME                                                      DESIRED   CURRENT   READY   AGE
replicaset.apps/rook-ceph-operator-fd9bc499d              1         1         1       27m
replicaset.apps/csi-rbdplugin-provisioner-7879747877      1         1         1       7m39s
replicaset.apps/csi-cephfsplugin-provisioner-674fb56756   1         1         1       7m39s
<<<

kubectl get sc -n rook-ceph
>>>
NAME                   PROVISIONER                     RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
ceph-bucket            rook-ceph.ceph.rook.io/bucket   Delete          Immediate              false                  8m31s
ceph-filesystem        rook-ceph.cephfs.csi.ceph.com   Delete          Immediate              true                   8m31s
ceph-block (default)   rook-ceph.rbd.csi.ceph.com      Delete          Immediate              true                   8m31s
<<<
CRD 조회
bash
kubectl get \
cephclients.ceph.rook.io,\
objectbucketclaims.objectbucket.io,\
objectbuckets.objectbucket.io,\
cephobjectzonegroups.ceph.rook.io,\
cephobjectrealms.ceph.rook.io,\
cephbucketnotifications.ceph.rook.io,\
cephblockpools.ceph.rook.io,\
cephfilesystemmirrors.ceph.rook.io,\
cephbuckettopics.ceph.rook.io,\
cephcosidrivers.ceph.rook.io,\
cephblockpoolradosnamespaces.ceph.rook.io,\
cephfilesystemsubvolumegroups.ceph.rook.io,\
cephobjectstoreusers.ceph.rook.io,\
cephobjectstores.ceph.rook.io,\
cephrbdmirrors.ceph.rook.io,\
cephfilesystems.ceph.rook.io,\
cephobjectzones.ceph.rook.io,\
cephnfses.ceph.rook.io,\
cephclusters.ceph.rook.io \
-n rook-ceph
제거
bash
helm uninstall -n rook-ceph rook-ceph-cluster
helm uninstall -n rook-ceph rook-ceph

#crd finalizer update
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

sudo rm -rf /var/lib/rook

네임스페이스가 여전히 종료 중 상태에 있는 경우 삭제를 보류하고 있는 리소스를 확인하고 해당 종료자도 제거하세요.

bash
kubectl api-resources --verbs=list --namespaced -o name \
  | xargs -n 1 kubectl get --show-kind --ignore-not-found -n rook-ceph

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *