프로젝트

일반

사용자 정보

태스크 #12951

이 헌제님이 약 2달 전에 변경

## 목표  

 - 현재 csi-driver-lvm 은 단일 볼륨을 제어하는 방식으로 가이드하고 있다 
 - 여러 볼륨 그룹을 사용하는 경우 storageclass 와 csi-driver-lvm 을 어떤 식으로 구성해야 가능한지 가이드를 만들고, 그에 따른 테스트를 진행하여 검증한다. 


 ## 다중 csi-driver-lvm 설치 

 ### 다중 설치 가능성 

 csi-driver-lvm을 여러 개 설치하여 VG를 나누는 방향으로 운영 가능합니다. 

 ### 설치 방법 (namespace별) 

 ```bash 
 # namespace 생성 
 kubectl create namespace storage-1 
 kubectl create namespace storage-2 

 # 내부 registry 로 테스트시 namespace 별 secret 생성 
 kubectl create secret docker-registry gitlab-regcred --docker-server=registry.gitlab.gluesys.com --docker-username=gitlab-runner --docker-password=gldt-f2kyALfrvGAbDnxsKoSJ --namespace storage-1 
 kubectl create secret docker-registry gitlab-regcred --docker-server=registry.gitlab.gluesys.com --docker-username=gitlab-runner --docker-password=gldt-f2kyALfrvGAbDnxsKoSJ --namespace storage-2 

 # Namespace 1 설치 
 helm install csi-driver-lvm-1 \ 
     --namespace storage-1 \ 
     --set lvm.storageVG='VG1' \ 
     --set storageClasses.thin.additionalAnnotations."gms\.io/thinpool"="csi-pool1" 
     --set lvm.storageVIP='10.0.24.70' \ 
     --set lvm.driverName='lvm.csi.gms.io1' \ 
     --set lvm.storageClassStub='csi-driver-lvm-1' \ 
     ./charts/gluesys-csi 

 # Namespace 2 설치 
 helm install csi-driver-lvm-2 \ 
     --namespace storage-2 \ 
     --set lvm.storageVG='VG2' \ 
     --set storageClasses.thin.additionalAnnotations."gms\.io/thinpool"="csi-pool2" 
     --set lvm.storageVIP='10.0.24.71' \ 
     --set lvm.driverName='lvm.csi.gms.io2' \ 
     --set lvm.storageClassStub='csi-driver-lvm-2' \ 
     ./charts/gluesys-csi 
 ``` 

 ### 9.3 생성되는 StorageClass 

 | 항목 | gluesys-csi-1 | gluesys-csi-2 | 
 |------|------------------|------------------| 
 | **StorageClass 이름** | `csi-driver-lvm-1-thin` | `csi-driver-lvm-2-thin` | 
 | **provisioner** | `lvm.csi.gms.io1` | `lvm.csi.gms.io2` | 
 | **연결된 driver** | csi-driver-lvm-1 | csi-driver-lvm-2 | 
 | **VG** | VG1 | VG2 | 
 | **VIP** | 10.0.24.70 | 10.0.24.71 | 

 ### 9.4 장점 

 | 장점 | 설명 | 
 |------|------| 
 | **용량 분산** | VG별로 별도의 thinpool 관리 가능 | 
 | **장애 격리** | 한 VG에 장애 발생 시 다른 VG에 영향 없음 | 
 | **성능 분산** | 여러 AnyStor-E 노드에 부하 분산 | 
 | **애플리케이션 분리** | 앱/환경별로 별도 스토리지 할당 가능 | 

 ### 9.5 제약사항 

 | 제약사항 | 내용 | 
 |---------|------| 
 | **동일 StorageClass 공유 불가** | 다른 driver가 같은 StorageClass 이름을 사용할 수 없음 | 
 | **앱별 명확한 지정** | 앱이 사용할 StorageClass를 명확히 지정해야 함 | 
 | **Migration 불가** | 한 VG에서 다른 VG로 마이그레이션 불가 | 
 | **driverName 충돌 방지** | 각 csi-driver-lvm은 고유한 driverName 사용 필수 | 
 | **Kasten 백업** | 각 StorageClass별로 백업 정책 설정 필요 | 

 ### 주의사항 

 | 항목 | 내용 | 
 |------|------| 
 | **Pod와 PVC 동일 namespace** | PVC가 생성된 namespace의 csi-driver-lvm만 사용 가능 | 
 | **Cross namespace 사용 불가** | Namespace A에서 생성된 PVC는 Namespace A의 csi-driver-lvm만 접근 가 능 | 
 | **StorageClass 지정** | 각 앱은 사용할 VG에 맞는 StorageClass를 명확히 지정해야 함 | 
 | **초기 단순화** | 초기에는 단일 csi-driver-lvm으로 시작하고 필요에 따라 확장 권장 | 

뒤로

클립보드 이미지 추가 (최대 크기: 50 MB)