ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ด์ํ ๋ ์จํ๋ก๋ฏธ์ค๋ณด๋ค ํธํ ์ ์ค ํ๋๊ฐ ๋ฐ๋ก ๋ณผ๋ฅจ ๊ด๋ฆฌ ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
EBS CSI Driver ๋ฅผ ์ค์น ํ Storage Class, PV ๊ทธ๋ฆฌ๊ณ PVC ๋ฅผ ํตํด ์ฝ๊ฒ AWS EBS ๋ฅผ ํตํด ๋ณผ๋ฅจ์ ์ธ์ ์ด๋์๋ ๊ฐ์ ธ๋ค ์ธ ์ ์์ฃ .
ํํธ, ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ณผ๋ฅจ์ ์ฌ์ฉํ ์ ์๋๋ฐ์.
์ปจํ ์ด๋๊ฐ ๊ณต์ ๋ฅผ ๊ฐ๋ฅ์ผ ํด์ฃผ๋ EmptyDir, ๋ ธ๋์ ๋ณผ๋ฅจ์ ํตํด ํ๋๊ฐ ๊ณต์ ๋ฅผ ๊ฐ๋ฅ์ผ ํด์ฃผ๋ HostPath, NFS ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ NFS ๊ธฐ๋ฅ ๋ฑ์ด ์์ต๋๋ค.
๊ทธ๋ผํ๋๋ฅผ ๋ ธ๋์ ๋ฐฐํฌํ ๋, ๊ทธ๋ผํ๋์ ์ค์ ํ์ผ์ ๊ทธ๋ผํ๋๊ฐ ๋ฐฐํฌ๋ ๋ ธ๋์ ๋ณผ๋ฅจ์ ์ ์ฅ์ด ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ง์ฝ ๊ทธ๋ผํ๋ ํ๋๊ฐ ๋ค๋ฅธ ๋ ธ๋์ ๋ฐฐํฌ๊ฐ ๋ ๊ฒฝ์ฐ ์ด์ ์ ๊ฐ์ง๊ณ ์๋ ๊ทธ๋ผํ๋ ์ค์ ์ ๋ถ๋ฌ ์ฌ ์ ์์ต๋๋ค. ๋ ธ๋์ ๋ณผ๋ฅจ์ด ๋ฐ๊ผ๊ธฐ ๋๋ฌธ์ด์ฃ .
AWS EBS ๋ ๋ณดํต ํ ๋ ธ๋์๋ง ๋ง์ดํธ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ฒฝ์ฐ ์ฝ๊ฒ ๋ง์ฃผํ ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. AWS EFS ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ CNCF ํ๋ก์ ํธ์ธ openEBS ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด์ฃ .
EFS ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ฌ์ค ์์ฃผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv
spec:
capacity:
storage: 10Ei
volumeMode: Filesystem
accessModes:
- ReadWriteMany
storageClassName: ""
persistentVolumeReclaimPolicy: Retain
csi:
driver: efs.csi.aws.com
volumeHandle: <EFS ID>::<ACCESSPOINT ID>
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
resources:
requests:
storage: 1Ei
์ ์ฒ๋ผ ๋ฐฐํฌํ ํ ๊ฐ์ ธ๋ค ์ฌ์ฉํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ openEBS ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด cStor, Maya, Jiva ๋ฑ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
CAS ๋ฅผ ์ด์ฉํด์ ๋ ธ๋๊ฐ ๋ณผ๋ฅจ๋ค์ ๋๊ธฐํ ์์ผ์ฃผ๋ ๋ฐฉ์์ด์ฃ . ๋ ์์ธํ ๊ฑด ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
ํ์ง๋ง ์ ๋ฐฉ๋ฒ๋ค์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
ํ ๋ ธ๋์๋ง ํ๋๊ฐ ๋ฐฐํฌ๋ ์ ์๋๋ก nodeSelector ๋ฅผ ์ง์ ํด์ฃผ๊ณ , ํด๋น ๋ ธ๋์ EBS ๋ฅผ attach ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ผํ๋์ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ค ์ฌ๋ฌ ๊ฐ ํ์์์ด 1๊ฐ์ ํ๋๋ง ๋์ ์ค์ด๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๋ ธ๋์ ๊ฑฐ์ณ ๋ฐฐํฌ๋ ํ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ ธ๋ ํ๋๋ฅผ ์ ํ ํ ๊ฑฐ๊ธฐ์ ์๋ก์ด EBS ๋ฅผ attach ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ผ ํ๋ฒ ํด๋ณด์ฃ .
AWS EBS ์์ ๋ณผ๋ฅจ์ ์์ฑํด๋์์ต๋๋ค.
Dynamic ์ด ์๋ Static ํ๊ฒ ๊ด๋ฆฌํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ StorageClass ๋ก ์์ฑํ ํ์๋ ์์ฃ .
์ด์ PV ์ PVC ๋ฅผ ์์ฑํ์ฃ .
awsElasticBlockStore ๋ deprecated ๋์๊ธฐ ๋๋ฌธ์ Static PV ๋ฅผ ์์ฑํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ํด์ผ ํฉ๋๋ค.
deprecated ๊ด๋ จ ๋ฌธ์๋ ์ฌ๊ธฐ ์ฐธ์กฐ
apiVersion: v1
kind: PersistentVolume
metadata:
name: grafana
spec:
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
csi:
driver: ebs.csi.aws.com
volumeHandle: vol-xxxx
volumeAttributes:
fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: grafana
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
storageClassName: ""
์ดํ kubectl get pv ์ kubectl get pvc ๋ฅผ ํตํด ์ ์์ฑ๋์๋์ง ํ์ธํด์ค์๋ค. STATUS ๊ฐ Binding ์ด์ฌ์ผ ์ฑ๊ณต์ ์ผ๋ก ์์ฑํ ๊ฒ๋๋ค.
PV ๊ฐ ์ ์์ ์ผ๋ก ์์ฑ๋๋ฉด Available ์ด๊ณ , PV ๊ฐ PVC ์ ๊ด๊ณ๋ฅผ ๋งบ๊ฒ๋๋ฉด Bound ๋ก ๋ฐ๋๊ฒ ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ PV ์ AWS EBS ๊ฐ ๋งบ์ด์ก๋ค๊ณ ํด์ STATUS ๊ฐ Bound ๋๋ ๊ฒ์ ์๋๋๋ค.
๊ทธ๋ฆฌ๊ณ persistentVolumeReclaimPolicy ์ ๋ฐ๋์ Retain ์ผ๋ก ํด์ค๋๋ค. Delete ๋ก ํ๊ฒ ๋๋ฉด UnBound ๊ฐ ๋์์ ๊ฒฝ์ฐ ์ญ์ ๋ฉ๋๋ค.
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS
grafana 8Gi RWO Retain Available
grafana 8Gi RWO Retain Bound
์ดํ deploy.yaml ์ ๊ฐ์ ธ๋ค ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. AWS EBS ์ ๋ฐ๋ก ์ ์ฅํ๊ณ ์์ผ๋ ์ถํ ๊ทธ๋ผํ๋๋ฅผ ๋ค๋ฅธ ๋ ธ๋์ ๋ฐฐํฌํ๋ค๊ณ ํด๋ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ถฉ๋ถํ ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์์ต๋๋ค.
EBS ๊ฐ์ ๊ฒฝ์ฐ ์์ปค ๋ ธ๋์ ๊ฐ์ ๊ฐ์ฉ ์์ญ์ ์กด์ฌํด์ผํฉ๋๋ค. ๋ง์ฝ ๋ค๋ฅธ ์์ญ์ ์๋ ์์ปค ๋ ธ๋์ ๋ง์ดํธํ๊ณ ์ถ๋ค๋ฉด, ์ค๋ ์ท์ ์ด์ฉํด ์ํ๋ ๊ฐ์ฉ์์ญ์ ๋ณต์ฌ ํ ์ฌ์ฉํ์ ์ผ ํฉ๋๋ค,
์ฌ์ค EFS ๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋๊ฒ ๊ฐ์ฅ ํธํฉ๋๋ค. ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๋จ์ ์ด ์์ฃ .
- EFS ๋ ๋น์ฉ์ด ๋น์ธ๋ค
- EBS ๋ณด๋ค ์๋๊ฐ ๋๋ฆด ์ ๋ฐ์ ์๋ค
ํ์ง๋ง ๊ด๋ จ ๊ธ๋ค์ ์ฐพ์๋ณด๋ ๋๋ถ๋ถ ๋ค๋ฅธ ๋ ธ๋์ ํ๋๊ฐ ๋ฐฐํฌ๋๋ ๊ฒฝ์ฐ ์ค์ ํ์ผ๋ค์ ๋๊ธฐํ ์ํค๊ธฐ ์ํด์ EFS ๋ฅผ ๋ง์ด ๊ถ์ฅํ๋๋ผ๊ณ ์.
์ด๋ก ์ ์ผ๋ก EFS ๋ํ NFS ์ด๊ธฐ ๋๋ฌธ์ EBS ๋ณด๋ค ๋น์ฐํ ์๋๊ฐ ๋๋ฆด ์ ๋ฐ์ ์๊ณ , File System ์ด๋ผ๋ ๋ชฉ์ ์๋ ์ฝ๊ฐ ๋ฒ์ด๋๊ธฐ๋ ํ์ง๋ง EFS ๋ ์ถฉ๋ถํ ์๋๋ฉด์์ ๋น ๋ฅด๋ค๊ณ ํฉ๋๋ค.
๊ทธ๋ผ ์ค๋์ ์ฌ๊ธฐ๊น์ง!