๐ ๊ฐ์ - StorageClass - K8S
๐ณ๏ธโ๐ [๊ถ๊ธํ์ ]
๐[๋ชฉ์ฐจ]
StorageClass๋ Kubernetes์์ ๋์ ํ๋ก๋น์ ๋์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๋ฆฌ์์ค์ด๋ค.์ฌ์ฉ์๊ฐ PVC(PersistentVolumeClaim)๋ฅผ ๋ง๋ค๋ฉด, PVC๊ฐ ์ฐธ์กฐํ๋ StorageClass์ ๋ฐ๋ผ ์๋ง์ PV๊ฐ ์๋์ผ๋ก ์์ฑ๋๋ค.
์ฌ์ฉ์๊ฐ PVC๋ง ๋ง๋ค๋ฉด Kubernetes๊ฐ ์์์ ์ ์ ํ ์คํ ๋ฆฌ์ง๋ฅผ ์์ฑํจ.
์: AWS์์๋ EBS, GCP์์๋ Persistent Disk, Ceph, NFS ๋ฑ ๋ค์ํ ๋ฐฑ์๋ ์ง์.
๋ค๋ฅธ ์ฑ๋ฅ/์๋/๊ฐ๊ฒฉ์ ๊ฐ์ง ์ฌ๋ฌ ์คํ ๋ฆฌ์ง ์ ํ ์ ์ ๊ฐ๋ฅ.
์: fast, standard, slow ๊ฐ์ StorageClass๋ฅผ ์ ์ํ๊ณ , ํ์์ ๋ฐ๋ผ ์ ํ ๊ฐ๋ฅ.
๋ณผ๋ฅจ์ reclaimPolicy, volumeBindingMode, parameters ๋ฑ์ ์ธ๋ถ ์ค์ ๊ฐ๋ฅ.
์: ReadWriteOnce, ReadOnlyMany, Retain, Delete ์ ์ฑ ๋ฑ.
ํ๋ฒ ์ ์ํ๋ฉด ์ฌ๋ฌ PVC์์ ํด๋น StorageClass๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ด ์ผ๊ด๋ ์คํ ๋ฆฌ์ง ์ ๋ต ๊ตฌํ ๊ฐ๋ฅ.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-storage
provisioner: kubernetes.io/no-provisioner
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
| ์คํ ๋ฆฌ์ง ์ข ๋ฅ | Provisioner ์ด๋ฆ | ๋น๊ณ |
|---|---|---|
| AWS EBS | ebs.csi.aws.com | EBS CSI Driver ํ์ |
| GCP PD | pd.csi.storage.gke.io | GKE์ ๋ด์ฅ |
| NFS | nfs.csi.k8s.io or nfs-client | ์ธ๋ถ NFS ์๋ฒ ํ์ |
| Ceph RBD | rbd.csi.ceph.com | CephCluster ์ฐ๋ |
| Longhorn | driver.longhorn.io | Longhorn ์ค์น ํ์ |
| Local Path | k8s.io/minikube-hostpath or rancher.io/local-path | ๋ก์ปฌ ๋์คํฌ ํ ์คํธ์ฉ |
| ๋ชจ๋ | ์ค๋ช |
|---|---|
Immediate | PVC๋ฅผ ์์ฑํ๋ฉด ์ฆ์ PV ๋ฐ์ธ๋ฉ ์๋ |
WaitForFirstConsumer | PVC๊ฐ ์ฐ๊ฒฐ๋ Pod์ด ์ค์ผ์ค๋ง๋ ๋ PV ์์ฑ ๋ฐ ๋ฐ์ธ๋ฉ ์ํ โ ๋ ธ๋ ์ง์ญ ๊ณ ๋ ค ๊ฐ๋ฅ |
| ๋ชจ๋ | ์ค๋ช |
|---|---|
Delete | PVC ์ญ์ ์ PV๋ ์ญ์ |
Retain | PVC ์ญ์ ํ PV๋ ๋จ๊ฒจ๋ (๋ฐ์ดํฐ ๋ณด์กด) |
Recycle | deprecated (๊ฐ๋จํ ์ด๊ธฐํ ํ ์ฌ์ฌ์ฉ) |
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: local-storage