블로그 홈

[kasten] 스토리지 클래스 스냅샷 연동 에러

Kasten 백업 엔진이 Rook-Ceph 블록 볼륨의 CSI 스냅샷을 찍어야 하는데, 어떤 스냅샷 클래스 규칙을 트리거해야 하는지 식별할 수 있는 전용 주석(Annotation)이 누락됨.

운영자7분 읽기3회
[kasten] 스토리지 클래스 스냅샷 연동 에러

이슈 : Rook-Ceph 볼륨 스냅샷 클래스 인식 실패

대시보드 진행 후에 스토리지 유효성 검사해봤는데 Failed 떨어짐…

{ "Status": "Failed", "Errors": ["Unable to find a VolumeSnapshotClass for provisioner (rook-ceph.rbd.csi.ceph.com) with k10 annotation (k10.kasten.io/is-snapshot-class) set to true."] }


원인 분석

기본적으로 CSI 표준 스냅샷을 호출하여 백업을 수행하는데 블록 스토리지와 매핑된 볼륨 스냅샷 클래스가 클러스터에 존재하더라도, Kasten 백업 엔진이 어떤 규칙을 트리거 해야 하는지 식별할 수 있는 Kasten 어노테이션이 있어야합니다.


해결방법

  1. 현재 배포된 rook-ceph 용 볼륨 스냅샷 클래스 이름 확인


  1. 해당 볼륨 스냅샷 클래스에 Kasten 매핑하도록 어노테이션 주입

실제 VolumeSnapshotClass 이름을 확인한 뒤 적용합니다. tru는 오타이며 반드시 true를 사용해야 합니다.

kubectl get volumesnapshotclass
kubectl annotate volumesnapshotclass <볼륨스냅샷이름> k10.kasten.io/is-snapshot-class=true --overwrite

동일 CSI driver에서 어노테이션이 활성화된 클래스가 중복되는지도 확인합니다. Kasten CSI Snapshot Configuration

  1. 유효성 다시 체크

failed to create snapshot: CSI Driver failed to create snapshot for PVC ... Failed to create snapshot resource: the server could not find the requested resource

이번엔 이렇게 생김…



광고

CSI 드라이버 원인

kubectl get pod -n kube-system

NAMESPACE     NAME                                   READY   STATUS             RESTARTS
kube-system   snapshot-controller-7f486974f9-nndnc   0/1     Error              3 (50s ago)
kube-system   snapshot-controller-7f486974f9-vgd27   0/1     CrashLoopBackOff   3 (13s ago)

스냅샷 pod가 이상하네요…

최종 해결

이번 기록에서는 snapshot-controller를 재배포했습니다. 다만 CrashLoopBackOff만으로 원인을 확정할 수는 없습니다. 운영 환경에서는 먼저 Pod 로그와 Event, 기존 컨트롤러의 배포 주체를 확인해야 합니다. 배포판이나 Operator가 관리하는 컨트롤러라면 별도 컨트롤러를 중복 설치하지 않습니다.

kubectl logs -n kube-system deployment/snapshot-controller --all-containers=true --tail=100
kubectl describe deployment snapshot-controller -n kube-system
kubectl get crd volumesnapshots.snapshot.storage.k8s.io volumesnapshotcontents.snapshot.storage.k8s.io volumesnapshotclasses.snapshot.storage.k8s.io

아래 v8.1.0 절차는 당시 기록의 버전입니다. 현재 최신 버전이나 모든 Kubernetes 배포판의 공통 권장 절차를 뜻하지 않습니다.


Step 1: 라벨 충돌이 난 기존 구버전 배포본 강제 제거

# 권한(RBAC)은 두고, 문제가 된 Deployment 자원만 깔끔하게 삭제합니다.
kubectl delete deployment snapshot-controller -n kube-system

Step 2: 경로가 수정된 정식 v8.1.0 파일로 재배포

# 1. 정식 v8.1.0 CRD 3종 일괄 주입 (온라인임)
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.1.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.1.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.1.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml

# 2. 당시 사용한 v8.1.0 스냅샷 컨트롤러 구성 적용
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.1.0/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.1.0/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml

4. 결과 검증

배포 완료 후 실시간으로 포드 상태를 모니터링합니다.

Bash

kubectl get pod -n kube-system -w | grep snapshot-controller
  • 확인 기준: snapshot-controller Pod가 1/1 Running인지 확인합니다. 이 상태만으로 백업 성공을 판정하지는 않습니다. Kasten 스토리지 검사를 다시 실행하고, 테스트 PVC의 스냅샷 생성과 복구까지 별도로 확인해야 합니다.

나이스^_^


참고자료

스토리지 클래스 항목 정리

세부 스토리지 클래스 항목들 정리해보겠습니다…

1. Provisioner (rook-ceph.rbd.csi.ceph.com)

스토리지 생성하고 관리하는 실제 CSI 드라이버 엔진 플러그인의 명칭

2. Reclaim Policy (Delete)

PV가 해제될 때 연결된 저장소를 어떻게 처리할지 정하는 정책입니다. Pod만 삭제하는 것과 PVC를 삭제하는 것은 다릅니다. Delete 정책에서는 PVC 삭제 뒤 PV와 연결된 저장소가 삭제될 수 있으므로, 보존해야 하는 데이터를 먼저 확인합니다.

  • 현재는 delete이기에 pvc 삭제하면 기존 데이터 삭제

3. Volume Bindiing Mode (Immediate)

PVC 요청되었을떄 , PV 언제 생성하고 바인딩할지 결정하는 정책

4. Allow Volume Expansion (true)

이미 생성되어 사용 중인 볼륨의 크기를 나중에 유연하게 늘릴 수 있는 기능을 지원하는지 여부임.

  • True면, 나중에 애플리케이션 용량이 부족해지면 볼륨 사이즈 확장하는 것임

5. Kasten Snapshot Type (CSI)

스냅샷 기능


광고

운

운영자

운영자

엔터프라이즈 인프라, 가상화, 백업 솔루션 및 데이터 아키텍처를 연구하고 기록합니다.

이전

다음

[kasten] Kasten 온라인 설치

[kasten] Kasten 온라인 설치

본 가이드는 Default StorageClass가 선언되지 않은 순수 Rook-Ceph (v1.31) 환경에서 쿠버네티스 엔터프라이즈 백업 솔루션인 Kasten K10 (v8.5)을 안정적으로 올리기 위한 핵심 가이드라인입니다.

23분 읽기4

관련 게시글

[kasten] Kasten 온라인 설치

[kasten] Kasten 온라인 설치

본 가이드는 Default StorageClass가 선언되지 않은 순수 Rook-Ceph (v1.31) 환경에서 쿠버네티스 엔터프라이즈 백업 솔루션인 Kasten K10 (v8.5)을 안정적으로 올리기 위한 핵심 가이드라인입니다.

23분 읽기4

댓글

또는 로그인

첫 번째 댓글을 남겨보세요!