Information in this document may be out of date

This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Dynamic Volume Provisioning

๋™์  ๋ณผ๋ฅจ ํ”„๋กœ๋น„์ €๋‹

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

๋ฐฐ๊ฒฝ

๋™์  ๋ณผ๋ฅจ ํ”„๋กœ๋น„์ €๋‹์˜ ๊ตฌํ˜„์€ storage.k8s.io API ๊ทธ๋ฃน์˜ StorageClass API ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๋Š” ๋ณผ๋ฅจ์„ ํ”„๋กœ๋น„์ „ํ•˜๋Š” ๋ณผ๋ฅจ ํ”Œ๋Ÿฌ๊ทธ์ธ (ํ”„๋กœ๋น„์ €๋„ˆ๋ผ๊ณ ๋„ ์•Œ๋ ค์ง)๊ณผ ํ”„๋กœ๋น„์ €๋‹์‹œ์— ํ”„๋กœ๋น„์ €๋„ˆ์—๊ฒŒ ์ „๋‹ฌํ•  ํŒŒ๋ผ๋ฏธํ„ฐ ์ง‘ํ•ฉ์„ ์ง€์ •ํ•˜๋Š” StorageClass ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ•„์š”ํ•œ ๋งŒํผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์Šคํ† ๋ฆฌ์ง€ (๊ฐ™๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ๋“ค)๋ฅผ ์ •์˜ํ•˜๊ณ  ๋…ธ์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์ด ๋””์ž์ธ์„ ํ†ตํ•ด ์ตœ์ข… ์‚ฌ์šฉ์ž๋Š” ์Šคํ† ๋ฆฌ์ง€ ํ”„๋กœ๋น„์ „ ๋ฐฉ์‹์˜ ๋ณต์žก์„ฑ๊ณผ ๋‰˜์•™์Šค์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ํ•˜์ง€๋งŒ, ์—ฌ์ „ํžˆ ์—ฌ๋Ÿฌ ์Šคํ† ๋ฆฌ์ง€ ์˜ต์…˜๋“ค์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๋™์  ํ”„๋กœ๋น„์ €๋‹ ํ™œ์„ฑํ™”ํ•˜๊ธฐ

๋™์  ํ”„๋กœ๋น„์ €๋‹์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ํ•˜๋‚˜ ์ด์ƒ์˜ ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค(StorageClass) ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ฌ์ „ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ์˜ค๋ธŒ์ ํŠธ๋Š” ๋™์  ํ”„๋กœ๋น„์ €๋‹์ด ํ˜ธ์ถœ๋  ๋•Œ ์‚ฌ์šฉํ•  ํ”„๋กœ๋น„์ €๋„ˆ์™€ ํ•ด๋‹น ํ”„๋กœ๋น„์ €๋„ˆ์—๊ฒŒ ์ „๋‹ฌํ•  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ •์˜ํ•œ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ์˜ค๋ธŒ์ ํŠธ์˜ ์ด๋ฆ„์€ ์œ ํšจํ•œ DNS ์„œ๋ธŒ๋„๋ฉ”์ธ ์ด๋ฆ„์ด์–ด์•ผ ํ•œ๋‹ค.

๋‹ค์Œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋Š” ํ‘œ์ค€ ๋””์Šคํฌ์™€ ๊ฐ™์€ ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ๋ฅผ ํ”„๋กœ๋น„์ „ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค "slow"๋ฅผ ๋งŒ๋“ ๋‹ค.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard

๋‹ค์Œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋Š” SSD์™€ ๊ฐ™์€ ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ๋ฅผ ํ”„๋กœ๋น„์ „ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค "fast"๋ฅผ ๋งŒ๋“ ๋‹ค.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-ssd

๋™์  ํ”„๋กœ๋น„์ €๋‹ ์‚ฌ์šฉํ•˜๊ธฐ

์‚ฌ์šฉ์ž๋Š” PersistentVolumeClaim ์— ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๋ฅผ ํฌํ•จ์‹œ์ผœ ๋™์ ์œผ๋กœ ํ”„๋กœ๋น„์ „๋œ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์š”์ฒญํ•œ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค v1.6 ์ด์ „์—๋Š” volume.beta.kubernetes.io/storage-class ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์–ด๋…ธํ…Œ์ด์…˜์€ v1.9๋ถ€ํ„ฐ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ด์ œ PersistentVolumeClaim ์˜ค๋ธŒ์ ํŠธ์˜ storageClassName ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ด ํ•„๋“œ์˜ ๊ฐ’์€ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ตฌ์„ฑํ•œ StorageClass ์˜ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค. (์•„๋ž˜๋ฅผ ์ฐธ๊ณ )

์˜ˆ๋ฅผ ๋“ค์–ด "fast" ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๋ฅผ ์„ ํƒํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ PersistentVolumeClaim ์„ ์ƒ์„ฑํ•œ๋‹ค.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: claim1
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: fast
  resources:
    requests:
      storage: 30Gi

์ด ํด๋ ˆ์ž„์˜ ๊ฒฐ๊ณผ๋กœ SSD์™€ ๊ฐ™์€ ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ๊ฐ€ ์ž๋™์œผ๋กœ ํ”„๋กœ๋น„์ „ ๋œ๋‹ค. ํด๋ ˆ์ž„์ด ์‚ญ์ œ๋˜๋ฉด ๋ณผ๋ฅจ์ด ์‚ญ์ œ๋œ๋‹ค.

๊ธฐ๋ณธ ๋™์ž‘

์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ชจ๋“  ํด๋ ˆ์ž„์ด ๋™์ ์œผ๋กœ ํ”„๋กœ๋น„์ „์ด ๋˜๋„๋ก ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋™์  ํ”„๋กœ๋น„์ €๋‹์„ ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๋Š” ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ด€๋ฆฌ์ž๋Š” storageclass.kubernetes.io/is-default-class ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํŠน์ • StorageClass ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ StorageClass ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์— ์กด์žฌํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ storageClassName ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์€ PersistentVolumeClaim ์„ ์ž‘์„ฑํ•˜๋ฉด, DefaultStorageClass ์–ด๋“œ๋ฏธ์…˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋””ํดํŠธ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” storageClassName ํ•„๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” ์ตœ๋Œ€ ํ•˜๋‚˜์˜ default ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ storageClassName ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์€ PersistentVolumeClaim ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค.

ํ† ํด๋กœ์ง€ ์ธ์‹

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

์ตœ์ข… ์ˆ˜์ • February 25, 2023 at 7:22 PM PST: [ko] Update outdated files in dev-1.26-ko.1 (M70-M81) (a9d321f745)