PV와 PVC를 이용하면 퍼시스턴트 스토리지를 쉽게 사용할 수 있지만 클러스터 관리자가 실제 스토리지를 프로비저닝해두어야 한다는 불편함이 있다.
쿠버네티스는 이 작업을 자동으로 수행할 수 있도록 PV 동적 프로비저닝(Dynamic Provisioning)을 지원하여, PV 프로비저너를 배포하고 사용자가 선택 가능한 PV 타입을 정의하는 스토리지 클래스(SC, Storage Class) 객체를 기반으로 지원한다.
이 글에서는 Storage Class 목록을 확인하고, 생성하는 명령어를 정리해둔다.
Storage Class 목록 확인
get 명령을 이용해 Storage Class의 목록을 확인할 수 있다.
kubectl get storageclasses.storage.k8s.io
Storage Class 상세 정보 확인
describe 명령을 이용해 이름, 프로비저너, 매개변수, ReclaimPolicy 등의 상세 정보를 확인할 수 있다.
kubectl describe storageclasses.storage.k8s.io <NAME>
# 예시
kubectl describe storageclasses.storage.k8s.io local-storage
프로비저너
PV 프로비저닝을 위해 사용되는 볼륨 플러그인
볼륨 바인딩 모드
볼륨 바인딩과 동적 프로비저닝의 시작 시기를 제어하며, 기본값은 Immediate이다.
- Immediate : 퍼시스턴트볼륨클레임이 생성되면 볼륨 바인딩과 동적 프로비저닝이 즉시 발생
- WaitForFirstConsumer : 퍼시스턴트볼륨클레임을 사용하는 파드가 생성될 때까지 퍼시스턴트볼륨의 바인딩과 프로비저닝을 지연시킴
Storage Class 생성
정의 yaml 파일을 작성하여 생성한다.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: delayed-volume-sc
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
+ 참고
PV는 storageClassName 속성을 지정할 수 있다.
특정 클래스의 PV는 해당 클래스를 요청하는 PVC에만 바인딩된다.
storageClassName이 없는 PV는 특정 클래스를 요청하지 않는 PVC에만 바인딩된다.
Storage Class 삭제
delete 명령을 사용하여 생성한 Storage Class를 삭제할 수 있다.
kubectl delete storageclasses.storage.k8s.io <NAME>
참고 문서
https://blog.eunsukim.me/posts/kubernetes-volume-overview
https://kubernetes.io/ko/docs/concepts/storage/storage-classes/