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
์ค๋ธ์ ํธ๋ฅผ default ๋ก ํ์ํ๋ค. - API ์๋ฒ์์
DefaultStorageClass
์ด๋๋ฏธ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ค.
๊ด๋ฆฌ์๋ storageclass.kubernetes.io/is-default-class
์ด๋
ธํ
์ด์
์
์ถ๊ฐํ์ฌ ํน์ StorageClass
๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ์ํ ์ ์๋ค.
๊ธฐ๋ณธ StorageClass
๊ฐ ํด๋ฌ์คํฐ์ ์กด์ฌํ๊ณ ์ฌ์ฉ์๊ฐ
storageClassName
๋ฅผ ์ง์ ํ์ง ์์ PersistentVolumeClaim
์
์์ฑํ๋ฉด, DefaultStorageClass
์ด๋๋ฏธ์
์ปจํธ๋กค๋ฌ๊ฐ ๋ํดํธ
์คํ ๋ฆฌ์ง ํด๋์ค๋ฅผ ๊ฐ๋ฆฌํค๋ storageClassName
ํ๋๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํ๋ค.
ํด๋ฌ์คํฐ์๋ ์ต๋ ํ๋์ default ์คํ ๋ฆฌ์ง ํด๋์ค๊ฐ ์์ ์ ์๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ
storageClassName
์ ๋ช
์์ ์ผ๋ก ์ง์ ํ์ง ์์ PersistentVolumeClaim
์
์์ฑํ ์ ์๋ค.
ํ ํด๋ก์ง ์ธ์
๋ค์ค ์์ญ ํด๋ฌ์คํฐ์์ ํ๋๋ ํ ์ง์ญ ๋ด ์ฌ๋ฌ ์์ญ์ ๊ฑธ์ณ ๋ถ์ฐ๋ ์ ์๋ค. ํ๋๊ฐ ์์ฝ๋ ์์ญ์์ ๋จ์ผ ์์ญ ์คํ ๋ฆฌ์ง ๋ฐฑ์๋๋ฅผ ํ๋ก๋น์ ํด์ผ ํ๋ค. ๋ณผ๋ฅจ ๋ฐ์ธ๋ฉ ๋ชจ๋๋ฅผ ์ค์ ํด์ ์ํํ ์ ์๋ค.