Block Storage 스토리지 클래스 사용하기
스토리지 클래스 활용 Pod, Pvc 배포
매니페스트 파일(예시:
bs-pod.yaml
와
bs-pvc.yaml
)을 작성하여 bs-ssd를 사용하는 Pod와 Pvc를 배포할 수 있습니다.
- 아래 매니페스트 파일은 예시입니다. 사용자의 환경에 맞춰 Image 등 주요 필드를 변경하여 사용하시기 바랍니다.
bs-ssd 스토리지 클래스를 활용한 Pod, Pvc를 생성하려면 다음 절차를 따르세요.
Pvc 매니페스트 파일
bs-pvc.yaml을 작성합니다.배경색 변경kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-bs-ssd spec: accessModes: - ReadWriteOnce storageClassName: bs-ssd volumeMode: Filesystem resources: requests: storage: 8Gikind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-bs-ssd spec: accessModes: - ReadWriteOnce storageClassName: bs-ssd volumeMode: Filesystem resources: requests: storage: 8Gi코드 블럭. Pvc 매니페스트 파일 bs-pvc.yaml 작성 예시 Pod 매니페스트 파일
bs-pod.yaml을 작성합니다.배경색 변경kind: Pod apiVersion: v1 metadata: name: pod-bs-ssd spec: containers: - name: busybox image: busybox:latest command: - sleep - "3600" volumeMounts: - mountPath: "/data" name: my-csi-volume volumes: - name: my-csi-volume persistentVolumeClaim: claimName: pvc-bs-ssdkind: Pod apiVersion: v1 metadata: name: pod-bs-ssd spec: containers: - name: busybox image: busybox:latest command: - sleep - "3600" volumeMounts: - mountPath: "/data" name: my-csi-volume volumes: - name: my-csi-volume persistentVolumeClaim: claimName: pvc-bs-ssd코드 블럭. Service 매니페스트 파일 bs-pod.yaml 작성 예시 kubectl apply 명령어를 사용해 Pvc, Pod 매니페스트를 배포합니다.
배경색 변경kubectl apply -f bs-pvc.yaml -f bs-pod.yamlkubectl apply -f bs-pvc.yaml -f bs-pod.yaml코드 블럭. kubectl apply 명령어로 매니페스트 배포 kubectl get pod,pvc명령어를 사용하여 배포 결과를 확인합니다.배경색 변경# kubectl get pod,pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS persistentvolumeclaim/pvc-bs-ssd Bound pvc-5a085a06-164f-45e1-b4c6-d2bfa3b0012c 8Gi RWO bs-ssd NAME READY STATUS RESTARTS AGE pod/pod-bs-ssd 1/1 Running 0 75s# kubectl get pod,pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS persistentvolumeclaim/pvc-bs-ssd Bound pvc-5a085a06-164f-45e1-b4c6-d2bfa3b0012c 8Gi RWO bs-ssd NAME READY STATUS RESTARTS AGE pod/pod-bs-ssd 1/1 Running 0 75s코드 블럭. kubectl get pod,pvc 명령어로 배포 결과 확인
특정 AZ에 Pod, Pvc 배포(allowedTopologies)
사용자가 allowedTopologies 설정을 포함한 별도의 스토리지 클래스를 생성하여, 특정 AZ에 Pod와 볼륨이 배포되도록 설정할 수 있습니다.
- 기본 배포된 bs-ssd 스토리지 클래스를 참고하여, 추가 스토리지 클래스 생성을 권장합니다.
- matchLabelExpressions으로는 “topology.bs.csi.samsungsdscloud.com/zone” 사용을 권장합니다. (전체 노드의 Label 기적용)
storageclass 매니페스트 파일
bs-az-a-sc.yaml을 작성합니다.배경색 변경apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: bs-ssd-az-a provisioner: bs.csi.samsungsdscloud.com reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: SSD allowedTopologies: - matchLabelExpressions: - key: topology.bs.csi.samsungsdscloud.com/zone values: - kr-west1-aapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: bs-ssd-az-a provisioner: bs.csi.samsungsdscloud.com reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: SSD allowedTopologies: - matchLabelExpressions: - key: topology.bs.csi.samsungsdscloud.com/zone values: - kr-west1-a코드 블럭. Pvc 매니페스트 파일 bs-az-a-sc.yaml 작성 예시 kubectl apply 명령어를 사용해 Storageclass, Pvc, Pod 매니페스트를 배포합니다.
배경색 변경kubectl apply -f bs-az-a-sc.yaml -f bs-pvc.yaml -f bs-pod.yamlkubectl apply -f bs-az-a-sc.yaml -f bs-pvc.yaml -f bs-pod.yaml코드 블럭. kubectl apply 명령어로 매니페스트 배포 kubectl get pod,pvc명령어를 사용하여 배포 결과를 확인합니다.배경색 변경# kubectl get pod,pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS pvc-bs-ssd Bound pvc-42365cee-724c-446a-af35-e54d9b16ad51 8Gi RWO bs-ssd-az-a NAME READY STATUS RESTARTS AGE IP NODE pod-bs-ssd 1/1 Running 0 46s 172.21.52.3 ske-aaa-lrwdj-vwww2# kubectl get pod,pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS pvc-bs-ssd Bound pvc-42365cee-724c-446a-af35-e54d9b16ad51 8Gi RWO bs-ssd-az-a NAME READY STATUS RESTARTS AGE IP NODE pod-bs-ssd 1/1 Running 0 46s 172.21.52.3 ske-aaa-lrwdj-vwww2코드 블럭. kubectl get pod,pvc 명령어로 배포 결과 확인
ssd_provisioned 볼륨 타입을 사용한 Pod, Pvc 배포
사용자가 SSD_Provisioned 볼륨 타입을 사용하여 생성 볼륨의 max_iops, max_throughput을 지정할 수 있습니다. max_iops와 max_throughput은 생성 PVC Annotation(1순위) 스토리지클래스의 parameters(2순위)에서 지정할 수 있습니다. 아래 예시에서는 두 설정 모두를 반영한 예시를 보여드립니다. (모두 설정된 경우, PVC Annotation 값을 반영합니다.)
- 기본 배포된 bs-ssd 스토리지 클래스를 참고하여, 추가 스토리지 클래스 생성을 권장합니다.
- max_iops, max_throughput가 미반영 된 경우, PVC 생성 요청이 실패하게 됩니다.
storageclass 매니페스트 파일
bs-ssdprovisioned-sc.yaml을 작성합니다.배경색 변경apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: bs-ssdprovisioned-sc provisioner: bs.csi.samsungsdscloud.com reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: SSD_Provisioned # 볼륨 타입 변경 (SSD > SSD_Provisioned) max_iops: "17000" # max_iops 설정 (5000-20000) max_throughput: "250" # max_throughput 설정 (250-1000)apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: bs-ssdprovisioned-sc provisioner: bs.csi.samsungsdscloud.com reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: SSD_Provisioned # 볼륨 타입 변경 (SSD > SSD_Provisioned) max_iops: "17000" # max_iops 설정 (5000-20000) max_throughput: "250" # max_throughput 설정 (250-1000)코드 블럭. Pvc 매니페스트 파일 bs-ssdprovisioned-sc.yaml 작성 예시 Pvc 매니페스트 파일
bs-ssdprovisioned-pvc.yaml을 작성합니다.배경색 변경kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-bs-ssdprovisioned annotations: "bs.csi.samsungsdscloud.com/max-iops": "5000" # max_iops 설정 "bs.csi.samsungsdscloud.com/max-throughput": "250" # max_throughput 설정 spec: accessModes: - ReadWriteOnce storageClassName: bs-ssdprovisioned-sc volumeMode: Filesystem resources: requests: storage: 8Gikind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-bs-ssdprovisioned annotations: "bs.csi.samsungsdscloud.com/max-iops": "5000" # max_iops 설정 "bs.csi.samsungsdscloud.com/max-throughput": "250" # max_throughput 설정 spec: accessModes: - ReadWriteOnce storageClassName: bs-ssdprovisioned-sc volumeMode: Filesystem resources: requests: storage: 8Gi코드 블럭. Pvc 매니페스트 파일 bs-ssdprovisioned-pvc.yaml 작성 예시 kubectl apply 명령어를 사용해 Storageclass, Pvc, Pod 매니페스트를 배포합니다.
배경색 변경kubectl apply -f bs-ssdprovisioned-sc.yaml -f bs-ssdprovisioned-pvc.yaml -f bs-pod.yamlkubectl apply -f bs-ssdprovisioned-sc.yaml -f bs-ssdprovisioned-pvc.yaml -f bs-pod.yaml코드 블럭. kubectl apply 명령어로 매니페스트 배포 생성된 볼륨의 max-iops, max-throughput 값은 콘솔의 Virtual Server > Block Storage에서 확인 할 수 있습니다.
아래는 max-iops, max-throughput PVC 어노테이션에 대한 설명입니다.
| 어노테이션 | 필수 | 기본값 | 범위 | 설명 |
|---|---|---|---|---|
| bs.csi.samsungsdscloud.com/max-iops | Optional | - | 5000-20000 | 서비스 생성 시 설정한 IOPS값 |
| bs.csi.samsungsdscloud.com/max-throughput | Optional | - | 250-1000 | 서비스 생성 시 설정한 Throughput 속도(MB/s) |