- 인쇄
- PDF
NAS 볼륨 CSI
- 인쇄
- PDF
구동 중인 컨테이너에 파일을 새로 추가할 경우 해당 파일들은 프로세스가 종료되거나 Kubernetes Liveness Probe의 상태 체크에 실패하여 컨테이너가 재시작될 때 모두 삭제됩니다. 이 때 NAS 볼륨을 사용하여 새로 추가된 파일들이 프로세스 종료 또는 컨테이너 재시작 후에도 유지되도록 설정할 수 있습니다.
Kubernetes NAS 볼륨 컨테이너를 배포할 때 PersistentVolumeClaim(PVC)를 생성하여 추가할 수 있습니다.
네이버 클라우드 플랫폼의 Ncloud Kubernetes Service는 볼륨 드라이버로 Container Storage Interface(CSI)를 제공합니다. 이 드라이버는 Kubernetes와 연동되어 NAS 볼륨 생성, 삭제, 리사이징 등의 작업을 지원합니다.
지원되는 버전 및 용량
지원되는 버전
네이버 클라우드 플랫폼에서 제공하는 NAS CSI 버전과 호환 Kubernetes 버전은 다음과 같습니다.
Ncloud NAS CSI Driver\Kubernetes Version | 1.16 | 1.17 | 1.18 | 1.19 | 1.20 | 1.21 | 1.22 | 1.23+ |
---|---|---|---|---|---|---|---|---|
v1.0.x | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 |
v2.0.x | 미지원 | 미지원 | 미지원 | 미지원 | 미지원 | 미지원 | 지원 | 지원 |
v2.1.x | 미지원 | 미지원 | 미지원 | 미지원 | 미지원 | 미지원 | 지원 | 지원 |
Kubernetes 버전에서 지원하는 스토리지 서비스는 다음과 같습니다.
Service\Kubernetes Version | 1.16+ |
---|---|
볼륨 생성 | 지원 |
볼륨 삭제 | 지원 |
볼륨 확장(리사이즈) | 지원 |
서버에 볼륨 할당 | 지원 |
서버에 볼륨 해제 | 지원 |
스냅샷 생성 | 미지원 |
스냅샷 삭제 | 미지원 |
할당 가능한 용량
Kubernetes NAS 볼륨은 CSI를 통해 100 GB 단위로 용량을 할당할 수 있습니다. 볼륨 크기를 별도로 정의하지 않는 경우 기본값인 500 GB로 NAS 볼륨이 생성됩니다. 할당 가능한 최소 용량과 최대 용량은 다음과 같습니다.
- 최소: 500 GB
- 최대: 10,000 GB
NAS CSI 드라이버 설치 (기존 미설치 클러스터용)
NAS CSI 드라이버는 Kubernetes가 설치될 때 기본으로 배포됩니다. 이 절에서는 기존 미설치 클러스터에서 NAS CSI를 설치하는 방법을 설명합니다. NAS CSI가 이미 설치되어 있는 경우에는 아래의 작업을 수행하지 않아도 됩니다.
NAS CSI Driver 배포
아래 파일들은 최신의 안정 버전을 가리킵니다. 설치 과정 중 문제가 생긴 경우 kubectl apply -f 명령을 다시 실행하여 누락된 리소스가 다시 반영되도록 합니다.
# kubernetes version >= 1.22
$ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://kr.object.ncloudstorage.com/nks-download/nas-csi/fin/kr/v2.1.0/nas-csi.yaml
# kubernetes version < 1.22
$ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://kr.object.ncloudstorage.com/nks-download/nas-csi/fin/kr/v1.0.2/nas-csi.yaml
NAS CSI 드라이버 상세 사항
StorageClass
StorageClass는 각 스토리지의 정책과 타입을 설정한 오브젝트입니다. 네이버 클라우드 플랫폼에서는 NAS 볼륨을 사용하는 StorageClass를 제공합니다.
NAS 볼륨의 StorageClass 오브젝트를 확인하려면 nks-nas-csi 이름을 가진 오브젝트를 확인해 주십시오. 아래와 같이 표시됩니다.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nks-nas-csi
mountOptions:
- hard
- nolock
- nfsvers=3
provisioner: nas.csi.ncloud.com
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
volumeBindingMode
: 볼륨 바인딩과 동적 프로비저닝이 동작하는 시점을 설정할 수 있습니다. 기본값은Immediate
입니다.
모드 | 설명 |
---|---|
Immediate | PVC가 생성되는 시점에 동작 |
WaitForFirstConsumer | Pod가 생성되는 시점에 동작 |
reclaimPolicy
: 사용이 끝난 PVC가 삭제될 때 사용 중이던PersistentVolume
을 재확보 또는 삭제하도록 정책을 설정할 수 있습니다. 기본값은Delete
입니다.
정책 | 설명 |
---|---|
Retain | PVC가 삭제될 때 사용 중인 PV는 재사용이 가능한 상태로 변경되며, NAS 볼륨 내부 데이터를 유지 |
Delete | PVC가 삭제될 때 사용 중인 PV를 함께 삭제하며, NAS 볼륨 반납 |
allowVolumeExpansion
: 값을true
로 설정하여PersistentVolumeClaim
을 확장할 수 있습니다.
Retain
정책을 통해 재확보한 NAS 볼륨은 네이버 클라우드 플랫폼 콘솔이나 API를 통해 반납할 수 있습니다.
Default Storage Class 변경
생성된 StorageClass 오브젝트의 기본 Storage Class 내용을 변경하려면 Changing the default StorageClass를 참조해 주십시오.
CSI Controller
CSI Controller는 볼륨의 생성, 삭제, 할당, 할당 해제, 스냅샷 등 각종 제어와 관리를 담당하는 인터페이스입니다.
NAS CSI Controller를 확인하려면 아래 명령어를 통해 Namespace kube-system
내의 Deployment 오브젝트를 확인해 주십시오.
$ kubectl --kubeconfig $KUBE_CONFIG get deployment -n kube-system
CSI Node
CSI 노드는 Kubernetes의 워커 노드마다 하나씩 동작하는 노드로, 볼륨의 포맷, 마운트, 언마운트 등의 동작을 담당합니다.
NAS CSI Node를 확인하려면 아래 명령어를 통해 Namespace kube-system
내의 DaemonSet 리소스를 확인해 주십시오.
$ kubectl --kubeconfig $KUBE_CONFIG get daemonset -n kube-system
NAS-CSI 드라이버 사용
NAS-CSI 드라이버 사용에 대한 자세한 예제는 NAS 볼륨 CSI 예제를 참조해 주십시오.