๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

[์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์‹ค์ „] ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณผ๋ฅจ ์‚ฌ์šฉ๋ฒ•

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2026. 6. 29.

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๋ฅผ ์ฐพ์•„ ์—ฐ๊ฒฐํ•ด ์ค€๋‹ค.

 

์ถœ์ฒ˜ : ๊ทธ๋ฆผ์œผ๋กœ๋ฐฐ์šฐ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์กฐํ›ˆ

์ƒ๋ช… ์ฃผ๊ธฐ

  1. ํ”„๋กœ๋น„์ €๋‹(Provisioning) : ๊ด€๋ฆฌ์ž๊ฐ€ PV๋ฅผ ๋ฏธ๋ฆฌ ๋งŽ์ด ๋งŒ๋“ค์–ด ๋‘๊ฑฐ๋‚˜(์ •์ ), PVC๊ฐ€ ์š”์ฒญ๋  ๋•Œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋„๋ก(๋™์ ) ์„ค์ •ํ•œ๋‹ค.
  2. ๋ฐ”์ธ๋”ฉ (Binding) : ์‚ฌ์šฉ์ž๊ฐ€ PVC๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์š”๊ตฌ ์กฐ๊ฑด์— ๋”ฑ ๋งž๋Š” PV๋ฅผ ์ฐพ์•„์„œ ์„œ๋กœ ์ง์„ ์ง€์–ด์ค€๋‹ค.
  3. ์‚ฌ์šฉ (Using) : ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ "๋‚˜ ์ด PVC ์“ธ๋ž˜"๋ผ๊ณ  ์ง€์ •ํ•˜๋ฉด, ํŒŒ๋“œ๊ฐ€ ๊ทธ ์ €์žฅ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.
  4. ๋ฐ˜ํ™˜(Reclaiming) : ํŒŒ๋“œ๊ฐ€ ๋‹ค ์“ฐ๊ณ  PVC๋ฅผ ์‚ญ์ œํ–ˆ์„ ๋•Œ, ๋‚จ์€ PV์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. (๊ทธ๋ƒฅ ๋‘”๋Œœ = Retain, ๊ฐ™์ด ์ง€์šด๋‹ค = Delete)

 

๋‘ ๊ฐœ๋กœ ๋‚˜๋ˆˆ ์ด์œ 

 

"๊ฐœ๋ฐœ์ž์™€ ์ธํ”„๋ผ ๊ด€๋ฆฌ์ž์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ"์ด๋‹ค.

 

๋งŒ์•ฝ PV/PVC ๊ฐœ๋…์ด ์—†๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ํŒŒ๋“œ๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค "AWS EBS ID, NFS ์„œ๋ฒ„ IP" ๊ฐ™์€ ์ธํ”„๋ผ ํ™˜๊ฒฝ์„ ๋‹ค ์•Œ๊ณ  ์ฝ”๋“œ๋ฅผ ์งœ์•ผ ํ•œ๋‹ค. ํ™˜๊ฒฝ์ด ๋ฐ”๋€Œ๋ฉด ์ฝ”๋“œ๋„ ๋‹ค ๊ณ ์ณ์•ผ ํ•œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ด ๊ตฌ์กฐ ๋•๋ถ„์—

  • ์ธํ”„๋ผ ๊ด€๋ฆฌ์ž๋Š” ์‹ค์ œ ์Šคํ† ๋ฆฌ์ง€(PV)๋งŒ ๊ด€๋ฆฌํ•˜๊ณ ,
  • ๊ฐœ๋ฐœ์ž๋Š” ์ธํ”„๋ผ๊ฐ€ ๋ฌด์—‡์ด๋“  ์ƒ๊ด€์—†์ด ๊ณต๊ฐ„ ์š”์ฒญ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. ํ™˜๊ฒฝ์ด AWS์—์„œ Azure๋กœ ๋ฐ”๋€Œ์–ด๋„ ๊ฐœ๋ฐœ์ž์˜ PVC ์ฝ”๋“œ๋Š” ๋ฐ”๋€” ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

์ถœ์ฒ˜ : ๊ทธ๋ฆผ์œผ๋กœ๋ฐฐ์šฐ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์กฐํ›ˆ

 

  1.  ๊ด€๋ฆฌ์ž์˜ PV (์™ผ์ชฝ yaml)
    • capacity / storage: 100Mi : ๊ด€๋ฆฌ์ž๊ฐ€ ์ด 100MB ํฌ๊ธฐ์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • accessModes: - ReadWriteMany : ์•„๋ž˜ ํ‘œ์— ๋‚˜์™€ ์žˆ๋“ฏ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…ธ๋“œ(์„œ๋ฒ„)๊ฐ€ ๋™์‹œ์— ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ
    • persistentVolumeReclaimPolicy: Retain : ๋ฐ˜ํ™˜ ์ •์ฑ…์ด๋‹ค. ์šฐ์ธก ํ•˜๋‹จ ํ‘œ์— ์žˆ๋“ฏ, ๋‚˜์ค‘์— ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด ๊ณต๊ฐ„์„ ๋‹ค์“ฐ๊ณ  PVC๋ฅผ ์‚ญ์ œํ•˜๋”๋ผ๋„ ์‹ค์ œ ๋ฐ์ดํ„ฐ์™€ PV๋Š” ๋ณด์กด(Retain)ํ•˜๊ฒ ๋‹ค๋Š” ์•ˆ์ •์žฅ์น˜
    • nfs : ... : ์ด ๋ณผ๋ฅจ์˜ ์‹ค์ฒด๋Š” 192.168.1.10 ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„ NFS ์„œ๋ฒ„์˜ /nfs_shared/pvc-vol ๊ฒฝ๋กœ๋ผ๋Š” ๋œป์ด๋‹ค. 
  2. ๊ฐœ๋ฐœ์ž์˜ PVC (์˜ค๋ฅธ์ชฝ yaml)
    • accessModes: -ReadWriteMany : ๊ฐœ๋ฐœ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ํ•„์š”ํ•ด๋ผ๊ณ  ์กฐ๊ฑด์„ ๊ฑธ์—ˆ์Šต๋‹ˆ๋‹ค.
      • ์ดˆ๋ก์ƒ‰ ํ™”์‚ดํ‘œ๋ฅผ ๋ณด๋ฉด, PV์˜ ์กฐ๊ฑด๊ณผ PVC์˜ ์กฐ๊ฑด์ด ์„œ๋กœ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์กฐ๊ฑด์ด ๋งž์•„์•ผ ๋งคํ•‘(๋ฐ”์ธ๋”ฉ)์ด ๋œ๋‹ค.
    • resources / requests / storage: 10Mi : ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”ํ•œ ํฌ๊ธฐ๋Š” ์ตœ์†Œ 10MB์ด๋‹ค. 
      • PV๊ฐ€ ๊ฐ€์ง„์šฉ๋Ÿ‰(100Mi)์ด PVC๊ฐ€ ์š”๊ตฌํ•œ ์šฉ๋Ÿ‰(10Mi) ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์—, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ด PV๋ฅผ ๋นŒ๋ ค์ฃผ๋ฉด ๋˜๊ฒ ๋‹ค ์ธ์ง€ํ•˜์—ฌ ํ†ต๊ณผ์‹œํ‚จ๋‹ค.

 

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 ํด๋”์— ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ ํ•˜๋‚˜ ํŒŒ์ค˜๋ผ๊ณ  ๋ช…๋ น์„ ์ „๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค.

ํ๋ฆ„ ์ •๋ฆฌ :

  1. storageclass.yaml ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ๋ฅจ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ์ฐฝ๊ตฌ๋ฅผ ์—ด์–ด๋‘๋ฉด
  2. ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ deployment.yaml์— ์˜ํ•ด ์‹คํ–‰๋œ ํ”„๋กœ๋น„์ €๋„ˆ ํŒŒ๋“œ๊ฐ€
  3. ์ง€์ •๋œ ์™ธ๋ถ€ 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) ๊ฐ™์€ ๊ณ ์œ  ๋””์Šคํฌ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.

 

์ถœ์ฒ˜ : ๊ทธ๋ฆผ์œผ๋กœ๋ฐฐ์šฐ๋Š” ์ฟ ๋ฒ„ ์กฐํ›ˆ

 

  • 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 ๋งˆ์šดํŠธ ํ•˜๋Š” ๋ช…๋ น์„ ์™„์ˆ˜ํ•œ๋‹ค.

๋Œ“๊ธ€