[์ฟ ๋ฒ๋คํฐ์ค ์ค์ ] ์ ํ๋ฆฌ์ผ์ด์ ๋ณผ๋ฅจ ์ฌ์ฉ๋ฒ
1. EmptyDir (๋น๋๋ ํฐ๋ฆฌ)
์ ์ : ์ฟ ๋ฒ๋คํฐ์ค์์ ๋น๋๋ ํฐ๋ฆฌ(emptyDir)๋ ํ๋(pod)๊ฐ ์์ฑ๋ ๋ ํจ๊ป ์์ฑ๋๊ณ , ๊ทธ ํฌ๋๊ฐ ์ญ์ ๋๋ฉด ๊ฐ์ด ์ญ์ ๋๋ ์์ ๋ณผ๋ฅจ์ด๋ค. ์ฝ๊ฒ ๋งํด, ํฌ๋ ๋ด๋ถ์ ์ปจํ ์ด๋๋ค์ด ์๋ก ํ์ผ์ ๊ณต์ ํ๊ฑฐ๋, ์์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ์ผํ์ฑ ๊ณต์ ๋ฉ๋ชจ์ฅ์ด๋ผ๊ณ ์๊ฐํ ์ ์๋ค.
์ฃผ์ ํน์ง :
- ์๋ช ์ฃผ๊ธฐ(Lifecycle)์ ๋๊ธฐํ : emptyDir์ ํ๋์ ์ด๋ช ์ ๊ฐ์ด ํฉ๋๋ค. ์ปจํ ์ด๋๊ฐ Crash ๋์ด ์ฌ์์๋์ด๋ emptyDir ์์ ๋ฐ์ดํฐ๋ ์ ์ง๋์ง๋ง, ํ๋ ์์ฒด๊ฐ ๋ ธ๋์์ ์ญ์ ๋๊ฑฐ๋ ํด๊ฑฐ ๋๋ฉด ๋ฐ์ดํฐ๋ ์๊ตฌ์ ์ผ๋ก ์ญ์ ๋๋ค.
- ์ปจํ ์ด๋ ๊ฐ ๋ฐ์ดํฐ ๊ณต์ : ํ๋์ ํ๋ ์์ ์ฌ๋ฌ ์ปจํ ์ด๋๊ฐ ๋ค์ด์์ ๋, ์ด ์ปจํ ์ด๋๋ค์ด ๋์ผํ emptyDir ๋ณผ๋ฅจ์ ๋ง์ดํธํ์ฌ ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์์ต๋๋ค.
- ์ ์ฅ ๋งค์ฒด ์ ํ ๊ฐ๋ฅ : ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ธ๋(Node)์ ๋์คํฌ ๋๋ ํฐ๋ฆฌ์ ์์ฑ๋์ง๋ง, ๋ฉ๋ชจ๋ฆฌ(RAM)๋ฅผ ๋งค์ฒด๋ก ์ฌ์ฉํ๋๋ก ์ค์ ํ ์๋ ์๋ค.
pod-emptydir.yaml

์คํฌ๋ฆฝํธ ์ค๋ช :
Pod (pod-emptydir) ์์ web-page(nginx), html-builder (alpine), ๋ณผ๋ฅจ : empty-directory์ด ์๋ค.
์ปจํ ์ด๋ 1 - web-page (nginx)
- nginx ์น์๋ฒ ์ด๋ฏธ์ง ์ฌ์ฉ
- empty-directory ๋ณผ๋ฅจ์ /usr/share/nginx/html ์ ๋ง์ดํธ
- nginx์ ๊ธฐ๋ณธ ์น ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ก, ์ฌ๊ธฐ ์๋ HTML ํ์ผ์ ์๋นํ๋ค.
์ปจํ ์ด๋ 2 - html-builder (alpine)
- alpine ๋ฆฌ๋ ์ค ์ด๋ฏธ์ง ์ฌ์ฉ
- ๋์ผํ empty-directory ๋ณผ๋ฅจ์ /html-dir ์ ๋ง์ดํธ
echo "This page created on $(date +%Y-%m-%d)" > /html-dir/index.html
sleep infinity
-> ํ์ฌ ๋ ์ง๊ฐ ๋ด๊ธด index.html์ ์์ฑํ๊ณ ๊ณ์ ๋๊ธฐ
๋ณผ๋ฅจ - empty-directory (emptyDir)
- Pod๊ฐ ๋ ธ๋์ ํ ๋น๋ ๋ ๋น ์ํ๋ก ์์ฑ๋๋ ์์ ๋ณผ๋ฅจ
- ๋ ์ปจํ ์ด๋๊ฐ ๋์ผํ ๋ณผ๋ฅจ์ ๊ณต์ -> ํ์ผ์ ์ฃผ๊ณ ๋ฐ์ ์ ์์
- Pod๊ฐ ์ญ์ ๋๋ฉด ๋ฐ์ดํฐ๋ ํจ๊ป ์ฌ๋ผ์ง
2. ํธ์คํธ๊ฒฝ๋ก(hostPath)
์ ์ : hostPath๋ Pod๊ฐ ์คํ ์ค์ธ ๋ ธ๋(ํธ์คํธ)์ ์ค์ ํ์ผ ์์คํ ๋๋ ํฐ๋ฆฌ๋ ํ์ผ์ Pod์ ๋ง์ดํธํ๋ ๋ณผ๋ฅจ ํ์ ์ด๋ค.
์ฃผ์ ํน์ง :
์ผ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ (์น ์๋ฒ, DB ๋ฑ)์๋ ์ ์ฌ์ฉํ์ง ์์ง๋ง, ๋ค์๊ณผ ๊ฐ์ ํน์ํ ๊ฒฝ์ฐ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
- ๋ ธ๋ ๋ ๋ฒจ์ ์์คํ ๋ชจ๋ํฐ๋ง / ๋ก๊ทธ ์์ง : ๋ ธ๋์ /var/log ๋๋ ํฐ๋ฆฌ๋ฅผ ํ๋์ ๋ง์ดํธํ์ฌ Fluented๋ Logstash ๊ฐ์ ๋๊ตฌ๋ก ๋ก๊ทธ๋ฅผ ์์งํ ๋ ์ฌ์ฉํ๋ค.
- ํธ์คํธ ์์คํ ๋ฆฌ์์ค ์ ๊ทผ : ๋ ธ๋์ Docker ๋ฐ๋ชฌ (์: /var/run/docker.sock)์ด๋ ์ปจํ ์ด๋ ๋ฐํ์์ ํ๋๊ฐ ์ง์ ์ ๊ทผํด์ผ ํ ๋ ์ฌ์ฉํ๋ค.
- ์ฑ๋ฅ ์ต์ ํ : ๋ก์ปฌ ๋ ธ๋์ ๊ฐ๋ ฅํ ์คํ ๋ฆฌ์ง ์ฑ๋ฅ์ด ํ์ํ ๋ ๊ฐ๋ ํ์ฉ๋๋ค.
deploy-hostpath.yaml, ds-hostpath.yaml

1. ์ค์ ์๋ฒ์ ํด๋ ์ง์ (volumes)
volumes:
- name: hostpath-directory
hostPath:
path: /var/log
- hostPath: path: /var/log
- ํ๋๊ฐ ๋ ์๋ ์ค์ ์ปดํจํฐ(๋ ธ๋)์ ์์คํ ๋ก๊ทธ ํดํฐ(/var/log)๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋ค๋ ๋ป
- name: hostpath-directory
- ๊ฐ์ ธ์จ ์ฐ๊ฒฐ ํต๋ก์ ์ด๋ฆ์ ์์๋ก hostpath-directory๋ผ๊ณ ๋ถ์ฌ๋ ๊ฒ์ด๋ค.
2. ์ปจํ ์ด๋ ๋ด๋ถ์ ๊ฝ์ ๋ฃ๊ธฐ
volumeMounts:
- mountPath: /host-log
name: hostpath-directory
- name: hostpath-directory
- ๋ฐ๋ก ๋ฐ์์ ์ ์ํ ์ด๋ฆ๊ณผ ๋๊ฐ์ ๋ณผ๋ฅจ์ ์ฐพ์์ ์ฐ๊ฒฐํ๋ค.
- mouthPath: /host-log
- ์ค์ ์๋ฒ์์ ๊ฐ์ ธ์จ ํด๋๋ฅผ, ์ปจํ ์ด๋ ๋ด๋ถ์ /host-log ๋ผ๋ ์ด๋ฆ์ ํด๋๋ก ๋ง๋ค์ด์ ์ง์ด๋ฃ๊ฒ ๋ค๋ ๋ป
DaemonSet์ ์ฌ์ฉํ๋ ์ด์ :
- ๋ชจ๋ ์๋ฒ(๋ ธ๋)๋ฅผ ๋น ์ง์์ด ๊ด๋ฆฌํ ๋ ์ฌ์ฉํ๋ ํน์ ๋ฐฉ์์ด๋ค.
3. NFS(Network File System) ๋ณผ๋ฅจ
์ ์ : ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋ ๊ณต์ฉ ์ธ์ฅ ํ๋๋์คํฌ์ด๋ค. ์ฌ๋ฌ ์๋ฒ(๋ ธ๋)์ ๋ ์๋ ์๋ง์ ํ๋๋ค์ด ๋์์ ์ ์ํด์ ์ฝ๊ณ ์ธ ์ ์๋ ๊ณต์ ํด๋ ์ญํ ์ ํ๋ค.
์ฃผ์ ํน์ง :
- ๋ฐ์ดํฐ ๊ณต์ (ReadWriteMany ์ง์)
- ์ฌ๋ฌ ๊ฐ์ ํ๋๊ฐ ๋์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์จ์ผ ํ ๋ ํ์์ ์ด๋ค. (ex. ์ฌ๋ฌ ์น ์๋ฒ๊ฐ ๋์ผํ ์ด๋ฏธ์ง ์ ๋ก๋ ํด๋๋ฅผ ๊ณต์ ํด์ผ ํ ๋)
- ์ด์์ฑ๊ณผ ์์ ์ฑ
- ํ๋๊ฐ ์ฃฝ์ด์ 101๋ฒ ์๋ฒ์ 102๋ฒ ์๋ฒ๋ก ์ด์ฌ๋ฅผ ๊ฐ๋, ์ด์ฐจํผ ๋คํธ์ํฌ๋ฅผ ํตํด ์๊ฒฉ NFS ์๋ฒ์ ์ ์ํ๋ฏ๋ก ๋ฐ์ดํฐ๊ฐ ๊ทธ๋๋ก ์ ์ง๋๋ค.
deploy-nfs.yaml

1. ์๊ฒฉ ๊ณต์ ํ๋๋์คํฌ ์ง์ (volumes)
volumes:
- name: nfs-vol
nfs:
server: 192.168.1.10
path: /nfs_shared/nfs-vol
- nfs : ์ด๋ฒ์ ๋ด ์๋ฒ ๋์คํฌ (hostPath)๊ฐ ์๋๋ผ, ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋ NFS ์๋ฒ์์ ํด๋๋ฅผ ๊ฐ์ ธ์ฌ๊ฒ๋ผ๋ ์ ์ธ์ด๋ค.
- server: 192.168.1.10
- ์๊ฒฉ์ ์๋ NFS ํ์ผ ์๋ฒ์ IP ์ฃผ์์ด๋ค.
- path: /nfs_shared/nfs-vol
- ๊ทธ NFS ์๋ฒ ์์ ๋ง๋ค์ด ๋ ์ค์ ๊ณต์ ํด๋์ ๊ฒฝ๋ก์ด๋ค.
- name: nfs-vol
- ์ด ๋คํธ์ํฌ ์ฐ๊ฒฐ ํต๋ก์ ์ด๋ฆ์ nfs-vol ์ด๋ผ๊ณ ์ง์
2. ์ปจํ ์ด๋ ๋ด๋ถ์ ๊ฝ์ ๋ฃ๊ธฐ (volumeMounts)
volumeMounts:
- name: nfs-vol
mountPath: /audit
- name: nfs-vol
- ๋ฐ๋ก ์๋์์ ์ ์ํ NFS ์ฐ๊ฒฐ ํต๋ก (name: nfs-vol)๋ฅผ ํ์ดํ๋ฅผ ๋ฐ๋ผ ๊ทธ๋๋ก ๊ฐ์ ธ์จ๋ค.
- mountPath: /audit
- ์ปจํ ์ด๋ ๋ด๋ถ์ /audit ๋ผ๋ ํด๋๋ฅผ ๋ง๋ค์ด์ ๊ทธ ์๊ฒฉ ๊ณต์ ํด๋๋ฅผ ๊ฝ์ ๋ฃ๊ฒ ๋ค๋ ๋ป
4. ํผ์์คํดํธ๋ณผ๋ฅจ(PV)๊ณผ ํผ์์คํดํธ๋ณผ๋ฅจํด๋ ์(PVC)
์ฟ ๋ฒ๋คํฐ์ค์์ PV(PersistentVolume)์ PVC(PersistentVolumeClaim)๋ ์ฝ๊ฒ ๋งํด ๋ฐฉ์ ๋น๋ ค์ฃผ๋ ๊ฑด๋ฌผ์ฃผ์ ๋ฐฉ์ ๊ตฌํ๋ ์ธ์ ์์ ๊ด๊ณ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ Pod๋ ์ธ์ ๋ ์ฃฝ๊ณ ๋ค์ ์ด์๋ ์ ์๋ ์์์ ์ธ ์กด์ฌ๋ผ, ํ๋ ๋ด๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉด ํ๋๊ฐ ์ฌ๋ผ์ง ๋ ๋ฐ์ดํฐ๋ ํจ๊ป ๋ ์๊ฐ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๋ ๊ณต๊ฐ์ด ํ์ํ๋ฐ, ์ด๋ PV์ PVC๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค.

PersistentVolume (PV)
- ๊ฐ๋ : ํด๋ฌ์คํฐ ๊ด๋ฆฌ์๊ฐ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๊ฑฐ๋, ์คํ ๋ฆฌ์ง ์์คํ ์ ์ํด ๋์ ์ผ๋ก ์์ฑ๋ ์ค์ ๋ฌผ๋ฆฌ์ ์ธ ์ ์ฅ ๊ณต๊ฐ์ด๋ค.
- ์ญํ : ํ๋๋์คํฌ, AWS EBS, NFS ๋ฑ ์ค์ ์ด๋ค ์คํ ๋ฆฌ์ง ๊ธฐ์ ์ ์ฌ์ฉํ๋์ง ๊ตฌ์ฒด์ ์ธ ์คํ์ ๋ด๊ณ ์๋ค.
- ํน์ง : ํ๋์๋ ๋ณ๊ฐ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์์ฒด์ ๋ฆฌ์์ค๋ก ๊ด๋ฆฌ๋๋ฏ๋ก, ํ๋๊ฐ ์ฌ๋ผ์ ธ๋ PV์ ๊ทธ ์์ ๋ฐ์ดํฐ๋ ์์ ํ๊ฒ ์ ์ง๋๋ค.
PersistentVolumeClaim (PVC)
- ๊ฐ๋ : ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌ์์๊ฒ "๋ ์ด์ ๋ ํฌ๊ธฐ์ ๊ณต๊ฐ์ด ํ์ํด"๋ผ๊ณ ์์ฒญํ๋ ์์ฒญ์์ด๋ค.
- ์ญํ : ํ์ํ ์ฉ๋์ ์ผ๋ง์ธ์ง, ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ ์ด๋ ํด์ผ ํ๋์ง๋ฅผ ์ ์ํ๋ค.
- ํน์ง : ๊ฐ๋ฐ์๋ ์ค์ ํ๋๋์คํฌ๊ฐ ์ด๋์ ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋์ด ์๋์ง ๋ชฐ๋ผ๋, ์ํ๋ ์คํ์ PVC์ ์ ์ด๋๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์์์ ์๋ง์ PV๋ฅผ ์ฐพ์ ์ฐ๊ฒฐํด ์ค๋ค.

์๋ช ์ฃผ๊ธฐ
- ํ๋ก๋น์ ๋(Provisioning) : ๊ด๋ฆฌ์๊ฐ PV๋ฅผ ๋ฏธ๋ฆฌ ๋ง์ด ๋ง๋ค์ด ๋๊ฑฐ๋(์ ์ ), PVC๊ฐ ์์ฒญ๋ ๋ ์๋์ผ๋ก ์์ฑ๋๋๋ก(๋์ ) ์ค์ ํ๋ค.
- ๋ฐ์ธ๋ฉ (Binding) : ์ฌ์ฉ์๊ฐ PVC๋ฅผ ์์ฑํ๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์๊ตฌ ์กฐ๊ฑด์ ๋ฑ ๋ง๋ PV๋ฅผ ์ฐพ์์ ์๋ก ์ง์ ์ง์ด์ค๋ค.
- ์ฌ์ฉ (Using) : ํ๋๋ฅผ ์์ฑํ ๋ "๋ ์ด PVC ์ธ๋"๋ผ๊ณ ์ง์ ํ๋ฉด, ํ๋๊ฐ ๊ทธ ์ ์ฅ ๊ณต๊ฐ์ ์ฌ์ฉํ๊ธฐ ์์ํ๋ค.
- ๋ฐํ(Reclaiming) : ํ๋๊ฐ ๋ค ์ฐ๊ณ PVC๋ฅผ ์ญ์ ํ์ ๋, ๋จ์ PV์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ๊ฒฐ์ ํ๋ค. (๊ทธ๋ฅ ๋๋ = Retain, ๊ฐ์ด ์ง์ด๋ค = Delete)
๋ ๊ฐ๋ก ๋๋ ์ด์
"๊ฐ๋ฐ์์ ์ธํ๋ผ ๊ด๋ฆฌ์์ ์ญํ ์ ๋ถ๋ฆฌํ๊ธฐ ์ํด์"์ด๋ค.
๋ง์ฝ PV/PVC ๊ฐ๋ ์ด ์๋ค๋ฉด ๊ฐ๋ฐ์๋ ํ๋๋ฅผ ๋ง๋ค ๋๋ง๋ค "AWS EBS ID, NFS ์๋ฒ IP" ๊ฐ์ ์ธํ๋ผ ํ๊ฒฝ์ ๋ค ์๊ณ ์ฝ๋๋ฅผ ์ง์ผ ํ๋ค. ํ๊ฒฝ์ด ๋ฐ๋๋ฉด ์ฝ๋๋ ๋ค ๊ณ ์ณ์ผ ํ๋ค.
ํ์ง๋ง ์ด ๊ตฌ์กฐ ๋๋ถ์
- ์ธํ๋ผ ๊ด๋ฆฌ์๋ ์ค์ ์คํ ๋ฆฌ์ง(PV)๋ง ๊ด๋ฆฌํ๊ณ ,
- ๊ฐ๋ฐ์๋ ์ธํ๋ผ๊ฐ ๋ฌด์์ด๋ ์๊ด์์ด ๊ณต๊ฐ ์์ฒญ๋ง ํ๋ฉด ๋๋ค. ํ๊ฒฝ์ด AWS์์ Azure๋ก ๋ฐ๋์ด๋ ๊ฐ๋ฐ์์ PVC ์ฝ๋๋ ๋ฐ๋ ํ์๊ฐ ์๋ค.

- ๊ด๋ฆฌ์์ PV (์ผ์ชฝ yaml)
- capacity / storage: 100Mi : ๊ด๋ฆฌ์๊ฐ ์ด 100MB ํฌ๊ธฐ์ ์ ์ฅ ๊ณต๊ฐ์ ์ค๋นํ์ต๋๋ค.
- accessModes: - ReadWriteMany : ์๋ ํ์ ๋์ ์๋ฏ, ์ฌ๋ฌ ๊ฐ์ ๋ ธ๋(์๋ฒ)๊ฐ ๋์์ ์ฝ๊ณ ์ธ ์ ์๋๋ก ํ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ
- persistentVolumeReclaimPolicy: Retain : ๋ฐํ ์ ์ฑ ์ด๋ค. ์ฐ์ธก ํ๋จ ํ์ ์๋ฏ, ๋์ค์ ๊ฐ๋ฐ์๊ฐ ์ด ๊ณต๊ฐ์ ๋ค์ฐ๊ณ PVC๋ฅผ ์ญ์ ํ๋๋ผ๋ ์ค์ ๋ฐ์ดํฐ์ PV๋ ๋ณด์กด(Retain)ํ๊ฒ ๋ค๋ ์์ ์ฅ์น
- nfs : ... : ์ด ๋ณผ๋ฅจ์ ์ค์ฒด๋ 192.168.1.10 ์ฃผ์๋ฅผ ๊ฐ์ง NFS ์๋ฒ์ /nfs_shared/pvc-vol ๊ฒฝ๋ก๋ผ๋ ๋ป์ด๋ค.
- ๊ฐ๋ฐ์์ PVC (์ค๋ฅธ์ชฝ yaml)
- accessModes: -ReadWriteMany : ๊ฐ๋ฐ์๊ฐ ์ฌ๋ฌ ๋
ธ๋๊ฐ ์ฝ๊ณ ์ธ ์ ์๋ ๊ณต๊ฐ์ด ํ์ํด๋ผ๊ณ ์กฐ๊ฑด์ ๊ฑธ์์ต๋๋ค.
- ์ด๋ก์ ํ์ดํ๋ฅผ ๋ณด๋ฉด, PV์ ์กฐ๊ฑด๊ณผ PVC์ ์กฐ๊ฑด์ด ์๋ก ์ผ์นํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด๋ ๊ฒ ์กฐ๊ฑด์ด ๋ง์์ผ ๋งคํ(๋ฐ์ธ๋ฉ)์ด ๋๋ค.
- resources / requests / storage: 10Mi : ๊ฐ๋ฐ์๊ฐ ํ์ํ ํฌ๊ธฐ๋ ์ต์ 10MB์ด๋ค.
- PV๊ฐ ๊ฐ์ง์ฉ๋(100Mi)์ด PVC๊ฐ ์๊ตฌํ ์ฉ๋(10Mi) ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ธฐ ๋๋ฌธ์, ์ฟ ๋ฒ๋คํฐ์ค๋ ์ด PV๋ฅผ ๋น๋ ค์ฃผ๋ฉด ๋๊ฒ ๋ค ์ธ์งํ์ฌ ํต๊ณผ์ํจ๋ค.
- accessModes: -ReadWriteMany : ๊ฐ๋ฐ์๊ฐ ์ฌ๋ฌ ๋
ธ๋๊ฐ ์ฝ๊ณ ์ธ ์ ์๋ ๊ณต๊ฐ์ด ํ์ํด๋ผ๊ณ ์กฐ๊ฑด์ ๊ฑธ์์ต๋๋ค.
5. StorageClass
์ฝ๊ฒ ๋งํด ์คํ ๋ฆฌ์ง ์๋ ์ํ๊ธฐ์ด์ ๋ฐฉ ์ข ๋ฅ ์๋ด์์ด๋ค. ์์ ๊ด๋ฆฌ์๊ฐ PV๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด ๋๋ ๋ฐฉ์์ ์ ์ ํ๋ก๋น์ ๋์ด๋ผ๊ณ ํ๋๋ฐ, ๊ฐ๋ฐ์๊ฐ PVC๋ฅผ ์๋ฐฑ ๊ฐ์ฉ ์์ฒญํ ๋๋ง๋ค ๊ด๋ฆฌ์๊ฐ ๋ฐค์์๊ฐ๋ฉฐ NFS ์๋ฒ์ ํด๋ ํ๊ณ PV yaml์ ๋ง๋ค ์ ์๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ๋ฐ์๊ฐ PVC๋ฅผ ์ฌ๋ฆฌ๋ฉด, ์ค์ ์ ์ฅ ๊ณต๊ฐ(PV)์ ์๋์ผ๋ก ๋๋ฑ ๋ง๋ค์ด์ฃผ๋ ์๋ํ ์์คํ ์ด ๋ฐ๋ก StorageClass์ด๋ค.

StorageClass ์ข ๋ฅ


์ญํ : NFS ํ๋ก๋น์ ๋ ๋ฐฐํฌ๋ฅผ ์ํ Deployment ์ ์ (์๋ฐ๋ถ)
์ด ํ์ผ์ nfs-subdir-external-provisioner ๋ผ๋ ์คํ์์ค ํ๋ก๋น์ ๋๋ฅผ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ํ๋์ ํ๋(Pod)๋ก ๋์ฐ๊ธฐ ์ํ Deployment ์ค์ ์ ์๋ถ๋ถ์ด๋ค.
- startegy.type : Recreate : ํ๋๊ฐ ์ ๋ฐ์ดํธ๋ ๋ ๊ธฐ์กด ํ๋๋ฅผ ์์ ํ ์ข ๋ฃํ ํ ์ ํ๋๋ฅผ ์์ฑํ๋ ์ ๋ต์ด๋ค.
- ์ค๋ฅธ์ชฝ ์ผ๋ฌ์คํธ (๊ด๋ฆฌ์ + RBAC) : ์ด ํ๋ก๋น์ ๋ ํ๋๊ฐ ์ฟ ๋ฒ๋คํฐ์ค API ์๋ฒ์ ํต์ ํ๋ฉฐ ๋ณผ๋ฅจ์ ์๋์ผ๋ก ์์ฑ•์ญ์ ํ๋ ค๋ฉด ๊ถํ์ด ํ์ํ๋ค. ์ด๋ฅผ ์ํด RBAC(์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด) ์ค์ ์ธ rbac.yaml์ด ํจ๊ป ํ์ํ๋ค๋ ์ ์ ๋ช ์ํ๊ณ ์๋ค.

์ญํ : Deployment ์ค์ (ํ๋ฐ๋ถ - ์ค์ ์ปจํ ์ด๋ ๋ฐ NFS ์๋ฒ ์ฐ๊ฒฐ)
ํ๋ก๋น์ ๋ ํ๋๊ฐ ์คํ๋ ๋ ์ด๋ค ์ด๋ฏธ์ง๋ฅผ ์ฐ๊ณ , ์ค์ ์ด๋ค NFS ์๋ฒ์ ์ด๋ค ๋๋ ํฐ๋ฆฌ์ ์ฐ๊ฒฐํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ํต์ฌ ์ค์ ์ด๋ค.
- serviceAccountName: nfs-client-provisioner : ์์ ์ธ๊ธํ ๊ถํ(RBAC)์ ์ด ํ๋์ ๋ถ์ฌํ๊ธฐ ์ํด ๊ณ์ ์ ์ง์ ํ๋ ๋ถ๋ถ์ด๋ค.
- containers ๋ฐ image (๋ผ์ธ 21-23) : ์ค์ ๋ก ์คํ๋ ํ๋กํผ์ ๋์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ฃผ์๋ฅผ ์ง์ ํ๊ณ ์๋ค.
- volumeMounts & volumes (๋ผ์ธ 24-26, ๋ผ์ธ 34-38) :
- ํ๋จ volumes : ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์ธ๋ถ์ ์๋ ์ค์ NFS ์๋ฒ ์ฃผ์(192.168.1.10)์ ๊ณต์ ๋๋ ํฐ๋ฆฌ ๊ฒฝ๋ก (/nfs_shared/dynamic-vol)๋ฅผ ์ ์ํ๋ค.
- ์๋จ volumeMounts : ์ธ๋ถ NFS ๋๋ ํฐ๋ฆฌ๋ฅผ ํ๋ก๋น์ ๋ ์ปจํ ์ด๋ ๋ด๋ถ์ /persistentvolumes ๋ผ๋ ๊ฒฝ๋ก์ ๋ง์ดํธ(์ฐ๊ฒฐ)ํ๋ค.
- env (ํ๊ฒฝ๋ณ์, ๋ผ์ธ 27-33) :
- PROVISONER_NAME : ์ด ํ๋ก๋น์ ๋์ ๊ณ ์ ์๋ณ์ ์ด๋ฆ์ด๋ค. ๋์ค์ StorageClass ๊ฐ ์ด ์ด๋ฆ์ ๋ณด๊ณ ํธ์ถํ๊ฒ ๋๋ค.
- NFS_SERVER ๋ฐ NFS_PATH : ํ๋จ์ ๋ณผ๋ฅจ ์ ๋ณด์ ๋์ผํ๊ฒ ์ค์ NFS ์๋ฒ ์ ๋ณด๋ฅผ ์ปจํ ์ด๋ ์์ ํ๊ฒฝ ๋ณ์๋ก ์ฃผ์ ํด ์ค๋ค. (ํ๋ฉด์ ์ํ ํ์ดํ = ๋งํฌ๋ ํ๋จ ๋ณผ๋ฅจ ์ค์ ๊ฐ๊ณผ ์๋จ ํ๊ฒฝ ๋ณ์ ๊ฐ์ด ์ผ์นํด์ผ ํจ์ ๋ณด์ฌ์ค๋ค.)

์ญํ : ์ฌ์ฉ์๊ฐ ์์ฒญํ ์ ์๋ ์ ์ฅ์ ๊ท๊ฒฉ ์ ์ (storageclass.yaml)
๊ฐ๋ฐ์๋ ์ฌ์ฉ์๊ฐ "๋ ์ฉ๋ 10๊ธฐ๊ฐ์ง๋ฆฌ ๋์คํฌ๊ฐ ํ์ํด!"๋ผ๊ณ ์์ฒญ(PVC)ํ ๋, ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ณผ๋ฅจ์ ๋ง๋ค์ด ์ค์ง ์ ์ํ๋ ํ ํ๋ฆฟ ๊ฐ์ ๊ฐ๋ ์ด๋ค.
- kind: StorageClass : ์ด ํ์ผ์ด ์คํ ๋ฆฌ์ง ํด๋์ค ์์์์ ๋ช ์
- metadata.name: managed-nfs-storage : ์ฌ์ฉ์๊ฐ PVC๋ฅผ ์์ฑํ ๋ ์คํ ๋ฆฌ์ง ํด๋์ค ์ด๋ฆ์ผ๋ก ์ ๊ฒ ๋ ์ด๋ฆ์ด๋ค. (์ : storagecClassName: managed-nfs-storage)
- provisioner: k8s-sigs.io/nfs-subdir-external-provisioner (๋ผ์ธ9) : ๊ฐ์ฅ ์ค์ํ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๋ค. ์ฌ์ฉ์๊ฐ ์ด ์คํ ๋ฆฌ์ง ํด๋์ค๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด, ์์คํ ์ ๋ ๋ฒ์งธ ํ์ผ ํ๊ฒฝ๋ณ์(PROVISONER_NAME)์์ ์ ์ํ๋ ๋๊ฐ์ ์ด๋ฆ์ ํ๋ก๋น์ ๋ ํ๋๋ฅผ ์ฐพ์์ NFS ํด๋์ ํ์ ๋๋ ํฐ๋ฆฌ ํ๋ ํ์ค๋ผ๊ณ ๋ช ๋ น์ ์ ๋ฌํ๊ฒ ๋๋ค.
ํ๋ฆ ์ ๋ฆฌ :
- storageclass.yaml ์ ํตํด ์ฌ์ฉ์๊ฐ ๋ณผ๋ฅจ์ ์์ฒญํ ์ ์๋ ์ฐฝ๊ตฌ๋ฅผ ์ด์ด๋๋ฉด
- ์ฌ์ฉ์์ ์์ฒญ์ด ์์ ๋ deployment.yaml์ ์ํด ์คํ๋ ํ๋ก๋น์ ๋ ํ๋๊ฐ
- ์ง์ ๋ ์ธ๋ถ NFS ์๋ฒ์ ์์กทใ ์ผ๋ก ํด๋๋ฅผ ๋ง๋ค์ด ์ปจํ ์ด๋์๊ฒ ๋์คํฌ ๋ณผ๋ฅจ์ผ๋ก ๋ฐฐ์ ํด ์ฃผ๋ ์ผ๋ จ์ ์๋ํ ์์คํ ์ค์ ์ด๋ค.
6. volumeClaimTemplates
volumeClaimTemplates๋ StatefulSet์์๋ง ์ฌ์ฉ ํ ์ ์๋ค.
- ๋ํ๋ก์ด๋จผํธ(Deployment) : ํ๋๋ค์ด ์์ ํ ๋์ผํ๊ณ ๋์ฒด ๊ฐ๋ฅํ Stateless(์ํ์์) ํ๊ฒฝ์ ์งํฅํ๋ค. ์ด๋ค ํ๋๊ฐ ์ฃฝ๊ณ ์๋ก ์ด์๋๋ ์๊ด์๋ ์น ์๋ฒ ๊ฐ์ ๊ตฌ์กฐ์ด๋ค.
- ์คํ ์ดํธํ์ (StatefulSet) : ๋ฐ์ดํฐ๋ฒ ์ด์ค(MySQL, MongoDB, ElasticSearch ๋ฑ)์ฒ๋ผ ํ๋ ํ๋ํ๋๊ฐ ๊ณ ์ ํ ID์ ์์ ๋ง์ ๊ณ ์ ํ ๋ฐ์ดํฐ(์ํ)๋ฅผ ์ ์งํด์ผ ํ๋ Stateful(์ํ ์์) ํ๊ฒฝ์ ์ํด ์กด์ฌํ๋ค.
- ์ด๋ฌํ ๊ทผ๋ณธ์ ์ธ ๋ชฉ์ ์ฐจ์ด ๋๋ฌธ์ ํ๋๋ง๋ค ๋ ๋ฆฝ๋ ๋ณผ๋ฅจ์ ์๋์ผ๋ก ์์ฑํด์ฃผ๋ volumeClaimTemplates๊ฐ ์คํ ์ดํธํ์ ์๋ง ํ์์ ์ผ๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ค.

์คํ ์ดํธํ์ ์ด volumeClaimTemplates๋ฅผ ์ฌ์ฉํด ํ๋์ ๋ณผ๋ฅจ์ ์ด๋ป๊ฒ ๋งค์นญํ๋์ง ๋ณด์ฌ์ฃผ๋ ๊ทธ๋ฆผ์ด๋ค.
- volumeClaimTemplates์ ์๋ ๋ฐฉ์ : ๊ทธ๋ฆผ์ ๋ณด๋ฉด sts(StatefulSet)๊ฐ ํ๋๋ฅผ 3๊ฐ ๋์ธ ๋, ์ค์์ volumeclaimtemplates ์ค์ ์ ๊ธฐ๋ฐ์ผ๋ก PV#0,1,2 ๋ผ๋ ๊ณ ์ ํ ๋ณผ๋ฅจ 3๊ฐ๋ฅผ ํ๋ ๊ฐ์์ ๋ง์ถฐ ๊ฐ๊ฐ ์์ฑํ๋ค.
- ๊ณ ์ ํ 1:1 ๋งค์นญ :
- pod-1(์ค๋ฅธ์ชฝ)์ ์ค์ง PV#1์๋ง ์ฐ๊ฒฐ๋๋ค.
- ๋ง์ฝ pod-1์ด ์ฃฝ์๋ค๊ฐ ๋ค์ ์ด์๋๋, ์ฟ ๋ฒ๋คํฐ์ค๋ ์ด ํ๋๊ฐ ๊ธฐ์กด์ pod-1์์ ์๋ณํ๊ณ ์ ํํ ์๋ ์ฐ๋ PV#1์ ๋ค์ ๋ถ์ฌ์ค๋ค.
- ์ค๋ฅธ์ชฝ Headless Service : ์คํ ์ดํธํ์ ์ ํ๋๋ง๋ค ๊ณ ์ ํ ๋คํธ์ํฌ ์๋ณ์(Domain #0, #1, #2)๋ฅผ ๊ฐ์ง๋ค. ์ด๋ฅผ ํตํด ์ธ๋ถ์์ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต์ ๋ฒ(Master ํน์ Slave)์ ์ ํํ ์ฐพ์ ๊ฐ ์ ์๊ฒ ํ๋ค.

๋ฐ๋ฉด, ๋ํ๋ก์ด๋จผํธ๊ฐ ๋ณผ๋ฅจ์ ๋ค๋ฃจ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ์์ ๋ณด์ฌ์ค๋ค.
- ๋จ์ผ PVC ๊ณต์ ๊ตฌ์กฐ :
- ๋ํ๋ก์ด๋จผํธ๋ ํ ํ๋ฆฟ ๋ด๋ถ์ volumeClaimTemplates ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ์๋ค. ๋์ ์ฌ์ ์ ๋ง๋ค์ด์ง ๋จ ํ๋์ PVC๋ฅผ ์ง์ ํ๋ค.
- ๋์ผํ ๋ณผ๋ฅจ ๋ฐ๋ผ๋ณด๊ธฐ :
- ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋ํ๋ก์ด๋จผํธ๋ก ์์ฑ๋ 3๊ฐ์ ํ๋๊ฐ ๋ชจ๋ ๋๊ฐ์ ํ๋์ PVC๋ฅผ ํตํด ํ๋์ PV๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์๋ค. ๋ง์ฝ ์ด ๋ณผ๋ฅจ์ด ์ฌ๋ฌ ํ๋์์ ๋์์ ์ผ๊ธฐ/์ฐ๊ธฐ๊ฐ ์ ๋๋ ๋ฐฉ์(ReadWriteOnce)์ด๋ผ๋ฉด, ํ๋ ํ๋๋ง ๋ณผ๋ฅจ์ ์ ์ ํ๊ณ ๋๋จธ์ง ํ๋๋ ์๋ฌ๊ฐ ๋๊ฑฐ๋ ๋๊ธฐํ๊ฒ ๋๋ค.
- ๋์์ ์ฝ๊ธฐ/์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ ํ์ผ ์์คํ (NFS)์ ์ฐ๋๋ผ๋, ๋ชจ๋ ํ๋๊ฐ ๋๊ฐ์ ์ ์ฅ์๋ฅผ ๊ณต์ ํ๋ฏ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถ์ ์ ์ฅ(Sharding/Replication) ๊ฐ์ ๊ณ ์ ๋์คํฌ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์๋ค.
- ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋ํ๋ก์ด๋จผํธ๋ก ์์ฑ๋ 3๊ฐ์ ํ๋๊ฐ ๋ชจ๋ ๋๊ฐ์ ํ๋์ PVC๋ฅผ ํตํด ํ๋์ PV๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์๋ค. ๋ง์ฝ ์ด ๋ณผ๋ฅจ์ด ์ฌ๋ฌ ํ๋์์ ๋์์ ์ผ๊ธฐ/์ฐ๊ธฐ๊ฐ ์ ๋๋ ๋ฐฉ์(ReadWriteOnce)์ด๋ผ๋ฉด, ํ๋ ํ๋๋ง ๋ณผ๋ฅจ์ ์ ์ ํ๊ณ ๋๋จธ์ง ํ๋๋ ์๋ฌ๊ฐ ๋๊ฑฐ๋ ๋๊ธฐํ๊ฒ ๋๋ค.

- storageCalssName: "managed-nfs-storage" : ์ด ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ฉด ์์ ๊ตฌ์ถํ๋ NFS ํ๋ก๋น์ ๋์๊ฒ ์๋์ผ๋ก ์ ํธ๊ฐ ๊ฐ๋ค.
- ์๋ ์์ฑ ๋ฉ์ปค๋์ฆ : ์ฟ ๋ฒ๋คํฐ์ค๋ replicas: 3 ์ ๋ณด์ ์ด ํ
ํ๋ฆฟ์ ์กฐํฉํ์ฌ ์ด 3๊ฐ์ PVC๋ฅผ ์๋ ๊ท์น์ผ๋ก ์๋ ๋น๋ํ๋ค.
- each-sts-backup-sts-0 โ sts-0 ํ๋์ ์ฐ๊ฒฐ (20Gi)
- each-sts-backup-sts-1 โ sts-1 ํ๋์ ์ฐ๊ฒฐ (20Gi)
- each-sts-backup-sts-2 โ sts-2 ํ๋์ ์ฐ๊ฒฐ (20Gi)
- ํ๋ฆ ์์
:
- ๊ฐ๋ฐ์๊ฐ ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฉํ๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค๋ "managed-nfs-storage(NFS ํ๋ก๋น์ ๋) ์ ํ์ ์จ์, ๊ฐ ํ๋(0, 1, 2๋ฒ)๋ฅผ ์ํ 20GB์ง๋ฆฌ ๊ฐ๋ณ ํด๋๋ฅผ ์๊ฒฉ NFS ์๋ฒ์ ๊ฐ๊ฐ ํ์ค ๋ค์, ์ปจํ ์ด๋ ์์ /backup_data ๊ฒฝ๋ก์ ๋ ๋ฆฝ์ ์ผ๋ก 1:1 ๋ง์ดํธ ํ๋ ๋ช ๋ น์ ์์ํ๋ค.
๋๊ธ