PV에서 사용할 스토리지를 미리 생성 해놓고 사용하는 것
PV 생성시 사용할 스토리지를 자동으로 생성하도록 만들어서(GCP, AWS …) 곧바로 사용하는 것
스토리지 클래스가 있으면 더이상 PV 정의가 필요하지 않다.
왜냐하면 스토리지 클래스가 생성되면 자동으로 PV가 생성되기 때문이다.
(그렇다고 PV를 안 쓰는 건 아니고, 수동으로 만들지 않아도 된다는 의미)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: low-latency
annotations:
storageclass.kubernetes.io/is-default-class: "false"
provisioner: csi-driver.example-vendor.example
reclaimPolicy: Retain # default value is Delete
allowVolumeExpansion: true
mountOptions:
- discard # this might enable UNMAP / TRIM at the block storage layer
volumeBindingMode: WaitForFirstConsumer
parameters:
guaranteedReadWriteLatency: "true" # provider-specific
kubectl create -f {파일}
kubectl get sc
Immediate
(default) : PVC가 생성되면 즉시 바인딩과 프로비저닝을 실행하는 모드. 원하지 않는 PVC에 바인딩 될 수 있으니 사용하지 않는 것을 권장
WaitForFirstConsumer
: 파드가 PVC를 사용할 때 까지 PVC-PV 바인딩을 수행하지 않고 지연시킴
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal WaitForFirstConsumer 14s (x4 over 47s) persistentvolume-controller waiting for first consumer to be created before binding
SC 생성 → (자동) PV 생성 → PVC 생성 → 파드에 PVC 할당
SC가 생성되었다면, 파드 definition file 내용 중 PVC에 그 SC의 이름을 넣어서 정의하면 끝이다.
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx:alpine
name: nginx
volumeMounts:
- mountPath: "/var/www/html"
name: smlee-vol # 아래 volumes에서 정의한 이름 사용
volumes:
- name: smlee-vol
persistentVolumeClaim: # 생성한 pvc 사용하기
claimName: local-pvc