Storage Class

zuckerfrei·2024년 1월 14일
0

Kubernetes

목록 보기
50/63

Static Provisioning

PV에서 사용할 스토리지를 미리 생성 해놓고 사용하는 것

Dynamic Provisioning

PV 생성시 사용할 스토리지를 자동으로 생성하도록 만들어서(GCP, AWS …) 곧바로 사용하는 것

스토리지 클래스가 있으면 더이상 PV 정의가 필요하지 않다.
왜냐하면 스토리지 클래스가 생성되면 자동으로 PV가 생성되기 때문이다.
(그렇다고 PV를 안 쓰는 건 아니고, 수동으로 만들지 않아도 된다는 의미)

SC 생성

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

Volume Binding Mode

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
profile
무설탕 음료를 좋아합니다

0개의 댓글