Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐ์ดํ„ฐ ์ €์žฅ

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ ์ผ๋ถ€๋Š” ์ด๋ฏธ ๊ตฌ์‹์ด๊ณ  ๋‹ค๋ฅธ ์ผ๋ถ€๋Š” ์•„์ฃผ ์ตœ๊ทผ์— ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์˜ต์…˜์ธ ์ปจํ…Œ์ด๋„ˆ ์Šคํ† ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ์—ฐ๊ฒฐ์„ ํฌํ•จํ•˜์—ฌ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ์˜ต์…˜์˜ ๊ฐœ๋…์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐ์ดํ„ฐ ์ €์žฅ

๋ฐฉ๋ฒ• 1: ํฌ๋“œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์—์„œ PV ์ง€์ •

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ํฌ๋“œ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ:

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐ์ดํ„ฐ ์ €์žฅ

์—ฐ๊ฒฐ๋œ ๋ณผ๋ฅจ๊ณผ ์œ„์น˜๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๋ถ€๋ถ„์€ ์ƒ‰์ƒ์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์„น์…˜์—์„œ ๋ณผ๋ฅจ๋งˆ์šดํŠธ ๋งˆ์šดํŠธ ์ง€์ (mountPath)์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. - ์˜๊ตฌ ๋ณผ๋ฅจ์ด ๋งˆ์šดํŠธ๋  ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ๋ณผ๋ฅจ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์„น์…˜์—์„œ x ํฌ๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๋ณผ๋ฅจ์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ณผ๋ฅจ์˜ ์ด๋ฆ„๊ณผ ์œ ํ˜•(์ด ๊ฒฝ์šฐ: awsElasticBlockStore) ๋ฐ ์—ฐ๊ฒฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ๋‚˜์—ด๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ณผ๋ฅจ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ณผ๋ฅจ์„ ์—ฌ๋Ÿฌ ํฌ๋“œ ์ปจํ…Œ์ด๋„ˆ์— ๋™์‹œ์— ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•์€ Kubernetes๊ฐ€ ์ดˆ๊ธฐ ๋‹จ๊ณ„์— ์žˆ๋˜ ๋งจ ์ฒ˜์Œ์— ๋ฐœ๋ช…๋˜์—ˆ์œผ๋ฉฐ ํ˜„์žฌ๋Š” ์ด ๋ฐฉ๋ฒ•์ด ๊ตฌ์‹์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•  ๋•Œ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ชจ๋“  ๋ณผ๋ฅจ์€ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•˜๋ฉฐ Kubernetes๋Š” ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ์•„๋ฌด๊ฒƒ๋„ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  2. ๊ฐ ๋ณผ๋ฅจ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ณ ์œ ํ•˜๋ฉฐ ํ•ด๋‹น ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํฌ๋“œ์˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ์ง€์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด(์˜ˆ: AWS์—์„œ Google Cloud๋กœ ์ด๋™) ๋ชจ๋“  ๋งค๋‹ˆํŽ˜์ŠคํŠธ์—์„œ ๋งˆ์šดํŠธ๋œ ๋ณผ๋ฅจ์˜ ์„ค์ •๊ณผ ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์€ ๋งค์šฐ ๋ถˆํŽธํ•˜๋ฏ€๋กœ ์‹ค์ œ๋กœ ์ด ๋ฐฉ๋ฒ•์€ configMap, secret,emptyDir,hostPath์™€ ๊ฐ™์€ ์ผ๋ถ€ ํŠน๋ณ„ํ•œ ์œ ํ˜•์˜ ๋ณผ๋ฅจ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • configMap ๋ฐ secret์€ ์ปจํ…Œ์ด๋„ˆ์˜ Kubernetes ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ๋กœ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ๋ณผ๋ฅจ์ž…๋‹ˆ๋‹ค.

  • emptyDir์€ Pod์˜ ์ˆ˜๋ช… ๋™์•ˆ๋งŒ ์ƒ์„ฑ๋˜๋Š” ์ž„์‹œ ๋ณผ๋ฅจ์ž…๋‹ˆ๋‹ค. ์ž„์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Pod๊ฐ€ ์‚ญ์ œ๋˜๋ฉด emptyDir ๋ณผ๋ฅจ๋„ ์‚ญ์ œ๋˜๊ณ  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋ฉ๋‹ˆ๋‹ค.

  • hostPath - /etc/kubernetes๋ฅผ ํฌํ•จํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„์˜ ๋กœ์ปฌ ๋””์Šคํฌ์— ์žˆ๋Š” ๋ชจ๋“  ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ ๋ณด์•ˆ ์ •์ฑ…์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์œ ํ˜•์˜ ๋ณผ๋ฅจ ์‚ฌ์šฉ์„ ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ณต๊ฒฉ์ž์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— HTC Kubernetes ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํƒ‘์žฌํ•˜๊ณ  ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ์ธ์ฆ์„œ๋ฅผ ํ›”์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ HostPath ๋ณผ๋ฅจ์€ kube-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ์‹œ์Šคํ…œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes๊ฐ€ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ ๋ฌธ์„œ์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• 2. SC/PVC/PV ๋…ธ์— ์—ฐ๊ฒฐ

๋Œ€์ฒด ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” Storage ํด๋ž˜์Šค, PertantVolumeClaim, PertantVolume ๊ฐœ๋…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ ์ €์žฅ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์˜๊ตฌ ๋ณผ๋ฅจ ์ฒญ๊ตฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
์˜๊ตฌ ๋ณผ๋ฅจ ์•ก์„ธ์Šค ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ณผ๋ฅจ ์ƒํƒœ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์•„์ด๋””์–ด์˜ ํ•ต์‹ฌ: ํฌ๋“œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์—์„œ PertantVolumeClaim ์œ ํ˜•์˜ ๋ณผ๋ฅจ์„ ๋‚˜ํƒ€๋‚ด๊ณ  ClaimName ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ด ์—”ํ„ฐํ‹ฐ์˜ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐ์ดํ„ฐ ์ €์žฅ

PertantVolumeClaim ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํฌํ•จ:

  • ๋””์Šคํฌ ํฌ๊ธฐ;
  • ์•ก์„ธ์Šค ๋ฐฉ๋ฒ•: ReadWriteOnce ๋˜๋Š” ReadWriteMany;
  • ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋งํฌ - ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋Š” ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์œ ํ˜•๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ๋ธŒ๋ ›์€ ๋…ธ๋“œ์— ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

PertantVolume ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋Š” ํŠน์ • ๋ณผ๋ฅจ(๋ณผ๋ฅจ ID, ๊ฒฝ๋กœ ๋“ฑ)์— ๋Œ€ํ•œ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค ๋ฐ ์•ก์„ธ์Šค ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

PVC๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Kubernetes๋Š” ํ•„์š”ํ•œ ๋ณผ๋ฅจ ํฌ๊ธฐ์™€ ํ•„์š”ํ•œ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋ฌด๋ฃŒ PertantVolume์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ PV๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ Kubernetes๋Š” ํŠน๋ณ„ ํ”„๋กœ๊ทธ๋žจ์ธ ํ”„๋กœ๋น„์ €๋„ˆ(ํ•ด๋‹น ์ด๋ฆ„์€ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค์— ํ‘œ์‹œ๋จ)๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์€ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์— ์—ฐ๊ฒฐํ•˜๊ณ , ํ•„์š”ํ•œ ํฌ๊ธฐ์˜ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜๊ณ , ์‹๋ณ„์ž๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ , PertantVolumeClaim๊ณผ ์—ฐ๊ฒฐ๋œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— PertantVolume ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ์ถ”์ƒํ™” ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์–ด๋–ค ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์—์„œ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ์ˆ˜์ค€์—์„œ ๊ด€๋ฆฌ ์ˆ˜์ค€์œผ๋กœ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค์— ์žˆ์Šต๋‹ˆ๋‹ค. AWS์—์„œ Google Cloud๋กœ ์ด๋™ํ•  ๋•Œ ํ•ด์•ผ ํ•  ์ผ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์—์„œ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ PVC๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์œ„ํ•œ Persistance Volume์€ Provisioner ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์— ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• 3. ์ปจํ…Œ์ด๋„ˆ ์Šคํ† ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค

๋‹ค์–‘ํ•œ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋Š” Kubernetes ์ฝ”์–ด์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๋ฒ„๊ทธ ์ˆ˜์ • ๋˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์˜ ๋ฆด๋ฆฌ์Šค๋Š” ์ƒˆ ๋ฆด๋ฆฌ์Šค์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ง€์›๋˜๋Š” ๋ชจ๋“  Kubernetes ๋ฒ„์ „์— ๋Œ€ํ•ด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์œ ์ง€ํ•˜๊ณ  ์ถ”๊ฐ€ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Cloud Foundry, Kubernetes, Mesos ๋ฐ Docker์˜ ๊ฐœ๋ฐœ์ž๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ๊ณผ ํŠน์ • ๋“œ๋ผ์ด๋ฒ„(CSI ๋“œ๋ผ์ด๋ฒ„)์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์„ค๋ช…ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค์ธ CSI(์ปจํ…Œ์ด๋„ˆ ์Šคํ† ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค)๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ €์žฅ ์‹œ์Šคํ…œ. ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ๊ณผ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•œ ๋ชจ๋“  ์ฝ”๋“œ๋Š” Kubernetes ์ฝ”์–ด์—์„œ ๋ณ„๋„์˜ ์‹œ์Šคํ…œ์œผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์Šคํ† ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค ๋ฌธ์„œ.

์ผ๋ฐ˜์ ์œผ๋กœ CSI ๋“œ๋ผ์ด๋ฒ„๋Š” ๋…ธ๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์ปจํŠธ๋กค๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋‘ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋…ธ๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ฐ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๋ฉฐ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ๋ฐ ์ž‘์—… ์ˆ˜ํ–‰์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ณผ๋ฅจ ์ƒ์„ฑ ๋˜๋Š” ์‚ญ์ œ, ์•ก์„ธ์Šค ๊ถŒํ•œ ํ• ๋‹น ๋“ฑ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ๋Š” ์ด์ „ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ Kubernetes ์ปค๋„์— ๋‚จ์•„ ์žˆ์ง€๋งŒ ๋” ์ด์ƒ ์‚ฌ์šฉ์ด ๊ถŒ์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ž‘์—…ํ•  ์‹œ์Šคํ…œ์— ๋งž๊ฒŒ CSI ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํŠน๋ณ„ํžˆ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Storage ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์ด๋ฏธ ์ต์ˆ™ํ•œ ์‚ฌ๋žŒ๋“ค์€ ํ˜์‹ ์œผ๋กœ ์ธํ•ด ๊ฒ์„ ๋จน์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋”์ฐํ•œ ์ผ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ๋Š” ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ Storage ํด๋ž˜์Šค๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ๋งŒ ์ž‘์—…ํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ๋„ ๊ณ„์† ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž๋ฅผ ์œ„ํ•œ ํ—ฌ๋ฆ„ ์ฐจํŠธ ์„ค์น˜ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๊ณ  ์„ค์ • ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ์„ค์ •์ด ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค์— ์ง์ ‘ ์ž…๋ ฅ๋œ ๊ฒฝ์šฐ ์ด์ œ๋Š” ๋จผ์ € helm ์ฐจํŠธ์—์„œ ์„ค์ •ํ•œ ๋‹ค์Œ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค์—์„œ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ์ ธ๋ณด๋ฉด ๋‚˜์œ ์ผ์€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

CSI ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Ceph ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์„ ์—ฐ๊ฒฐํ•˜๋„๋ก ์ „ํ™˜ํ•˜๋ฉด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ ์„ ์‚ดํŽด๋ณด๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Ceph๋กœ ์ž‘์—…ํ•  ๋•Œ CSI ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‚ด์žฅ ๋“œ๋ผ์ด๋ฒ„๋ณด๋‹ค ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ ์ž‘์—…์— ๋” ๋งŽ์€ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  1. ๋™์  ๋””์Šคํฌ ์ƒ์„ฑ. ์ผ๋ฐ˜์ ์œผ๋กœ RBD ๋””์Šคํฌ๋Š” RWO ๋ชจ๋“œ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜์ง€๋งŒ CSI for Ceph์—์„œ๋Š” RWX ๋ชจ๋“œ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๋…ธ๋“œ์— ์žˆ๋Š” ์—ฌ๋Ÿฌ ํฌ๋“œ๋Š” ํ•ด๋‹น ๋…ธ๋“œ์— ๋™์ผํ•œ RDB ๋””์Šคํฌ๋ฅผ ๋งˆ์šดํŠธํ•˜๊ณ  ๋ณ‘๋ ฌ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณตํ‰ํ•˜๊ฒŒ ๋งํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ๋ฐ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋””์Šคํฌ๋Š” ๋ธ”๋ก ์žฅ์น˜๋กœ๋งŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ค์ค‘ ์•ก์„ธ์Šค ๋ชจ๋“œ์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ์Šค๋ƒ…์ƒท์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋Š” ์Šค๋ƒ…์ƒท ์ƒ์„ฑ ์š”๊ตฌ ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CSI ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด๋ฅผ ํ™•์ธํ•˜๊ณ  ๋””์Šคํฌ์—์„œ ์Šค๋ƒ…์ƒท์„ ์ฐ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ PersistantVolume์˜ ๋ฐฑ์—…์ด๋‚˜ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋””์Šคํฌ ํฌ๊ธฐ ๋Š˜๋ฆฌ๊ธฐ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ์Šคํ† ๋ฆฌ์ง€ ๋ฐ PertantVolume์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  4. ํ• ๋‹น๋Ÿ‰. Kubernetes์— ๋‚ด์žฅ๋œ CephFS ๋“œ๋ผ์ด๋ฒ„๋Š” ํ• ๋‹น๋Ÿ‰์„ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ ์ตœ์‹  Ceph Nautilus๊ฐ€ ํฌํ•จ๋œ ์ƒˆ๋กœ์šด CSI ํ”Œ๋Ÿฌ๊ทธ์ธ์€ CephFS ํŒŒํ‹ฐ์…˜์—์„œ ํ• ๋‹น๋Ÿ‰์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ๋ฏธํ„ฐ๋ฒ•. CSI ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์–ด๋–ค ๋ณผ๋ฅจ์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€, ์–ด๋–ค ํ†ต์‹ ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ๋“ฑ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ธก์ •ํ•ญ๋ชฉ์„ Prometheus์— ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ํ† ํด๋กœ์ง€๋ฅผ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ง€๋ฆฌ์ ์œผ๋กœ ๋ถ„์‚ฐ๋˜๋Š” ๋ฐฉ์‹์„ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ์ง€์ •ํ•˜๊ณ  ์•”์Šคํ…Œ๋ฅด๋‹ด์— ์žˆ๋Š” ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์„ ๋Ÿฐ๋˜์—์„œ ์‹คํ–‰ ์ค‘์ธ ํฌ๋“œ์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CSI๋ฅผ ํ†ตํ•ด Ceph๋ฅผ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. Slurm ์ €๋… ํ•™๊ต ๊ฐ•์˜์˜ ์‹ค์ œ ๋ถ€๋ถ„์—์„œ. ๋‹ค์Œ์„ ๊ตฌ๋…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Ceph ๋น„๋””์˜ค ์ฝ”์Šค, 15์›” XNUMX์ผ์— ์ถœ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ์‚ฌ ์ž‘์„ฑ์ž: Sergey Bondarev, Southbridge์˜ ์‹ค๋ฌด ์„ค๊ณ„์ž, ๊ณต์ธ Kubernetes ๊ด€๋ฆฌ์ž, kubespray ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช….

๊ด‘๊ณ ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด์ต์„ ์œ„ํ•œ ์ž‘์€ ํฌ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค...

PS Sergey Bondarev๋Š” ๋‘ ๊ฐ€์ง€ ์ง‘์ค‘ ๊ณผ์ •์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋จ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ ์ด์Šค 28์›” 30~XNUMX์ผ ๋ฐ ๊ณ ๊ธ‰ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฉ”๊ฐ€ 14์›” 16~XNUMX์ผ.

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐ์ดํ„ฐ ์ €์žฅ

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€