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: Storage Classes

์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค

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

์†Œ๊ฐœ

์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€์˜ "classes"๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. ๋‹ค๋ฅธ ํด๋ž˜์Šค๋Š” ์„œ๋น„์Šค์˜ ํ’ˆ์งˆ ์ˆ˜์ค€ ๋˜๋Š” ๋ฐฑ์—… ์ •์ฑ…, ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ์ •ํ•œ ์ž„์˜์˜ ์ •์ฑ…์— ๋งคํ•‘๋  ์ˆ˜ ์žˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ž์ฒด๋Š” ํด๋ž˜์Šค๊ฐ€ ๋ฌด์—‡์„ ๋‚˜ํƒ€๋‚ด๋Š”์ง€์— ๋Œ€ํ•ด ์ƒ๊ด€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ด ๊ฐœ๋…์„ "ํ”„๋กœํŒŒ์ผ"์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ๋ฆฌ์†Œ์Šค

๊ฐ ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค์—๋Š” ํ•ด๋‹น ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค์— ์†ํ•˜๋Š” ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์„ ๋™์ ์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” provisioner, parameters ์™€ reclaimPolicy ํ•„๋“œ๊ฐ€ ํฌํ•จ๋œ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ์˜ค๋ธŒ์ ํŠธ์˜ ์ด๋ฆ„์€ ์ค‘์š”ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํด๋ž˜์Šค๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ด€๋ฆฌ์ž๋Š” ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฒ˜์Œ ์ƒ์„ฑํ•  ๋•Œ ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ๊ธฐํƒ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•˜๋ฉฐ, ์ผ๋‹จ ์ƒ์„ฑ๋œ ์˜ค๋ธŒ์ ํŠธ๋Š” ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†๋‹ค.

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

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Retain
allowVolumeExpansion: true
mountOptions:
  - debug
volumeBindingMode: Immediate

ํ”„๋กœ๋น„์ €๋„ˆ

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

๋ณผ๋ฅจ ํ”Œ๋Ÿฌ๊ทธ์ธ๋‚ด๋ถ€ ํ”„๋กœ๋น„์ €๋„ˆ์„ค์ • ์˜ˆ์‹œ
AWSElasticBlockStoreโœ“AWS EBS
AzureFileโœ“Azure ํŒŒ์ผ
AzureDiskโœ“Azure ๋””์Šคํฌ
CephFS--
Cinderโœ“OpenStack Cinder
FC--
FlexVolume--
GCEPersistentDiskโœ“GCE PD
iSCSI--
NFS-NFS
RBDโœ“Ceph RBD
VsphereVolumeโœ“vSphere
PortworxVolumeโœ“Portworx ๋ณผ๋ฅจ
Local-Local

์—ฌ๊ธฐ ๋ชฉ๋ก์—์„œ "๋‚ด๋ถ€" ํ”„๋กœ๋น„์ €๋„ˆ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค(์ด ์ด๋ฆ„์€ "kubernetes.io" ๊ฐ€ ์ ‘๋‘์‚ฌ๋กœ ์‹œ์ž‘ํ•˜๊ณ , ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ํ•จ๊ป˜ ์ œ๊ณต๋œ๋‹ค). ๋˜ํ•œ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์ •์˜ํ•œ ์‚ฌ์–‘์„ ๋”ฐ๋ฅด๋Š” ๋…๋ฆฝ์ ์ธ ํ”„๋กœ๊ทธ๋žจ์ธ ์™ธ๋ถ€ ํ”„๋กœ๋น„์ €๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์™ธ๋ถ€ ํ”„๋กœ๋น„์ €๋„ˆ์˜ ์ž‘์„ฑ์ž๋Š” ์ฝ”๋“œ์˜ ์ˆ˜๋ช…, ํ”„๋กœ๋น„์ €๋„ˆ์˜ ๋ฐฐ์†ก ๋ฐฉ๋ฒ•, ์‹คํ–‰ ๋ฐฉ๋ฒ•, (Flex๋ฅผ ํฌํ•จํ•œ)๋ณผ๋ฅจ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์žฌ๋Ÿ‰๊ถŒ์„ ๊ฐ€์ง„๋‹ค. kubernetes-sigs/sig-storage-lib-external-provisioner ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์—๋Š” ๋Œ€๋Ÿ‰์˜ ์‚ฌ์–‘์„ ๊ตฌํ˜„ํ•˜๋Š” ์™ธ๋ถ€ ํ”„๋กœ๋น„์ €๋„ˆ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ์ผ๋ถ€ ์™ธ๋ถ€ ํ”„๋กœ๋น„์ €๋„ˆ์˜ ๋ชฉ๋ก์€ kubernetes-sigs/sig-storage-lib-external-provisioner ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์— ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, NFS๋Š” ๋‚ด๋ถ€ ํ”„๋กœ๋น„์ €๋„ˆ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์ง€๋งŒ, ์™ธ๋ถ€ ํ”„๋กœ๋น„์ €๋„ˆ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์‚ฌ ์Šคํ† ๋ฆฌ์ง€ ์—…์ฒด๊ฐ€ ์ž์ฒด ์™ธ๋ถ€ ํ”„๋กœ๋น„์ €๋„ˆ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

๋ฆฌํด๋ ˆ์ž„ ์ •์ฑ…

์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค์— ์˜ํ•ด ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์€ ํด๋ž˜์Šค์˜ reclaimPolicy ํ•„๋“œ์— ์ง€์ •๋œ ๋ฆฌํด๋ ˆ์ž„ ์ •์ฑ…์„ ๊ฐ€์ง€๋Š”๋ฐ, ์ด๋Š” Delete ๋˜๋Š” Retain ์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ reclaimPolicy ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์€ Delete ์ด๋‹ค.

์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ๋˜๋Š” ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์—๋Š” ์ƒ์„ฑ ์‹œ ํ• ๋‹น๋œ ๋ฆฌํด๋ ˆ์ž„ ์ •์ฑ…์ด ์žˆ๋‹ค.

๋ณผ๋ฅจ ํ™•์žฅ ํ—ˆ์šฉ

๊ธฐ๋Šฅ ์ƒํƒœ: Kubernetes v1.11 [beta]

ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์€ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ true ๋กœ ์„ค์ •ํ•˜๋ฉด ํ•ด๋‹น PVC ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํŽธ์ง‘ํ•˜์—ฌ ๋ณผ๋ฅจ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ ๋ณผ๋ฅจ ์œ ํ˜•์€ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค์—์„œ allowVolumeExpansion ํ•„๋“œ๊ฐ€ true๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ๋ณผ๋ฅจ ํ™•์žฅ์„ ์ง€์›ํ•œ๋‹ค.

Table of Volume types and the version of Kubernetes they require
๋ณผ๋ฅจ ์œ ํ˜•์š”๊ตฌ๋˜๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „
gcePersistentDisk1.11
awsElasticBlockStore1.11
Cinder1.11
rbd1.11
Azure File1.11
Azure Disk1.11
Portworx1.11
FlexVolume1.13
CSI1.14 (alpha), 1.16 (beta)

๋งˆ์šดํŠธ ์˜ต์…˜

์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค์— ์˜ํ•ด ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์€ ํด๋ž˜์Šค์˜ mountOptions ํ•„๋“œ์— ์ง€์ •๋œ ๋งˆ์šดํŠธ ์˜ต์…˜์„ ๊ฐ€์ง„๋‹ค.

๋งŒ์•ฝ ๋ณผ๋ฅจ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋งˆ์šดํŠธ ์˜ต์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋ฐ, ๋งˆ์šดํŠธ ์˜ต์…˜์„ ์ง€์ •ํ•˜๋ฉด ํ”„๋กœ๋น„์ €๋‹์€ ์‹คํŒจํ•œ๋‹ค. ๋งˆ์šดํŠธ ์˜ต์…˜์€ ํด๋ž˜์Šค ๋˜๋Š” PV์—์„œ ๊ฒ€์ฆ๋˜์ง€ ์•Š๋Š”๋‹ค. PV ๋งˆ์šดํŠธ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉด, ๋งˆ์šดํŠธ๊ฐ€ ์‹คํŒจํ•˜๊ฒŒ ๋œ๋‹ค.

๋ณผ๋ฅจ ๋ฐ”์ธ๋”ฉ ๋ชจ๋“œ

volumeBindingMode ํ•„๋“œ๋Š” ๋ณผ๋ฅจ ๋ฐ”์ธ๋”ฉ๊ณผ ๋™์  ํ”„๋กœ๋น„์ €๋‹์˜ ์‹œ์ž‘ ์‹œ๊ธฐ๋ฅผ ์ œ์–ดํ•œ๋‹ค. ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด, Immediate ๋ชจ๋“œ๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

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

ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๋Š” WaitForFirstConsumer ๋ชจ๋“œ๋ฅผ ์ง€์ •ํ•ด์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด ๋ชจ๋“œ๋Š” ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ๋“œ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๊นŒ์ง€ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์˜ ๋ฐ”์ธ๋”ฉ๊ณผ ํ”„๋กœ๋น„์ €๋‹์„ ์ง€์—ฐ์‹œํ‚จ๋‹ค. ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์€ ํŒŒ๋“œ์˜ ์Šค์ผ€์ค„๋ง ์ œ์•ฝ ์กฐ๊ฑด์— ์˜ํ•ด ์ง€์ •๋œ ํ† ํด๋กœ์ง€์— ๋”ฐ๋ผ ์„ ํƒ๋˜๊ฑฐ๋‚˜ ํ”„๋กœ๋น„์ „๋œ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ฆฌ์†Œ์Šค ์š”๊ตฌ ์‚ฌํ•ญ, ๋…ธ๋“œ ์…€๋ ‰ํ„ฐ, ํŒŒ๋“œ ์–ดํ”ผ๋‹ˆํ‹ฐ(affinity)์™€ ์•ˆํ‹ฐ-์–ดํ”ผ๋‹ˆํ‹ฐ(anti-affinity) ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ธํŠธ(taint)์™€ ํ†จ๋Ÿฌ๋ ˆ์ด์…˜(toleration)์ด ํฌํ•จ๋œ๋‹ค.

๋‹ค์Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋™์  ํ”„๋กœ๋น„์ €๋‹๊ณผ WaitForFirstConsumer ๋ฅผ ์ง€์›ํ•œ๋‹ค.

๋‹ค์Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์‚ฌ์ „์— ์ƒ์„ฑ๋œ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ ๋ฐ”์ธ๋”ฉ์œผ๋กœ WaitForFirstConsumer ๋ฅผ ์ง€์›ํ•œ๋‹ค.

  • ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ
  • Local

๊ธฐ๋Šฅ ์ƒํƒœ: Kubernetes v1.17 [stable]
CSI ๋ณผ๋ฅจ์€ ๋™์  ํ”„๋กœ๋น„์ €๋‹๊ณผ ์‚ฌ์ „์— ์ƒ์„ฑ๋œ PV์—์„œ๋„ ์ง€์›๋˜์ง€๋งŒ, ์ง€์›๋˜๋Š” ํ† ํด๋กœ์ง€ ํ‚ค์™€ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ ค๋ฉด ํ•ด๋‹น CSI ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ๋ณธ๋‹ค.

apiVersion: v1
kind: Pod
metadata:
  name: task-pv-pod
spec:
  nodeSelector:
    kubernetes.io/hostname: kube-01
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage

ํ—ˆ์šฉ๋œ ํ† ํด๋กœ์ง€

ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์ž๊ฐ€ WaitForFirstConsumer ๋ณผ๋ฅจ ๋ฐ”์ธ๋”ฉ ๋ชจ๋“œ๋ฅผ ์ง€์ •ํ•˜๋ฉด, ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์—์„œ ๋” ์ด์ƒ ํŠน์ • ํ† ํด๋กœ์ง€๋กœ ํ”„๋กœ๋น„์ €๋‹์„ ์ œํ•œํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” allowedTopologies ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ์˜ˆ์‹œ๋Š” ํ”„๋กœ๋น„์ „๋œ ๋ณผ๋ฅจ์˜ ํ† ํด๋กœ์ง€๋ฅผ ํŠน์ • ์˜์—ญ์œผ๋กœ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ ์ฃผ๋ฉฐ ์ง€์›๋˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ zone ๊ณผ zones ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard
volumeBindingMode: WaitForFirstConsumer
allowedTopologies:
- matchLabelExpressions:
  - key: failure-domain.beta.kubernetes.io/zone
    values:
    - us-central-1a
    - us-central-1b

ํŒŒ๋ผ๋ฏธํ„ฐ

์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค์—๋Š” ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค์— ์†ํ•˜๋Š” ๋ณผ๋ฅจ์„ ์„ค๋ช…ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์žˆ๋‹ค. provisioner ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ๋ผ๋ฏธํ„ฐ type ์— ๋Œ€ํ•œ ๊ฐ’ io1 ๊ณผ ํŒŒ๋ผ๋ฏธํ„ฐ iopsPerGB ๋Š” EBS์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ ์ƒ๋žต ์‹œ ์ผ๋ถ€ ๊ธฐ๋ณธ๊ฐ’์ด ์‚ฌ์šฉ๋œ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์ตœ๋Œ€ 512๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ‚ค์™€ ๊ฐ’์„ ํฌํ•จํ•˜์—ฌ ํŒŒ๋ผ๋ฏธํ„ฐ ์˜ค๋ธŒ์ ํ„ฐ์˜ ์ด ๊ธธ์ด๋Š” 256 KiB๋ฅผ ์ดˆ๊ณผํ•  ์ˆ˜ ์—†๋‹ค.

AWS EBS

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow
provisioner: kubernetes.io/aws-ebs
parameters:
  type: io1
  iopsPerGB: "10"
  fsType: ext4
  • type: io1, gp2, sc1, st1. ์ž์„ธํ•œ ๋‚ด์šฉ์€ AWS ๋ฌธ์„œ๋ฅผ ๋ณธ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: gp2.
  • zone (์‚ฌ์šฉ ์ค‘๋‹จ(deprecated)): AWS ์˜์—ญ. zone ๊ณผ zones ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ์ผ๋ฐ˜์ ์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ™œ์„ฑํ™”๋œ ์˜์—ญ์— ๊ฑธ์ณ ๋ณผ๋ฅจ์ด ๋ผ์šด๋“œ ๋กœ๋นˆ์œผ๋กœ ์กฐ์ •๋œ๋‹ค. zone ๊ณผ zones ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
  • zones (์‚ฌ์šฉ ์ค‘๋‹จ): ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ AWS ์˜์—ญ์˜ ๋ชฉ๋ก. zone ๊ณผ zones ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ์ผ๋ฐ˜์ ์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ™œ์„ฑํ™”๋œ ์˜์—ญ์— ๊ฑธ์ณ ๋ณผ๋ฅจ์ด ๋ผ์šด๋“œ ๋กœ๋นˆ์œผ๋กœ ์กฐ์ •๋œ๋‹ค. zone ๊ณผ zones ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
  • iopsPerGB: io1 ๋ณผ๋ฅจ ์ „์šฉ์ด๋‹ค. 1์ดˆ๋‹น GiB์— ๋Œ€ํ•œ I/O ์ž‘์—… ์ˆ˜์ด๋‹ค. AWS ๋ณผ๋ฅจ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์š”์ฒญ๋œ ๋ณผ๋ฅจ ํฌ๊ธฐ์— ๊ณฑ์…ˆํ•˜์—ฌ ๋ณผ๋ฅจ์˜ IOPS๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์ด๋ฅผ 20,000 IOPS๋กœ ์ œํ•œํ•œ๋‹ค(AWS์—์„œ ์ง€์›ํ•˜๋Š” ์ตœ๋Œ€๊ฐ’์œผ๋กœ, AWS ๋ฌธ์„œ๋ฅผ ๋ณธ๋‹ค). ์—ฌ๊ธฐ์—๋Š” ๋ฌธ์ž์—ด, ์ฆ‰ 10 ์ด ์•„๋‹Œ, "10" ์ด ํ•„์š”ํ•˜๋‹ค.
  • fsType: fsType์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์ง€์›๋œ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: "ext4".
  • encrypted: EBS ๋ณผ๋ฅจ์˜ ์•”ํ˜ธํ™” ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์œ ํšจํ•œ ๊ฐ’์€ "ture" ๋˜๋Š” "false" ์ด๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ฌธ์ž์—ด, ์ฆ‰ true ๊ฐ€ ์•„๋‹Œ, "true" ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • kmsKeyId: ์„ ํƒ ์‚ฌํ•ญ. ๋ณผ๋ฅจ์„ ์•”ํ˜ธํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•  ํ‚ค์˜ ์ „์ฒด Amazon ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์ œ๊ณต๋˜์ง€ ์•Š์ง€๋งŒ, encrypted ๊ฐ€ true๋ผ๋ฉด AWS์— ์˜ํ•ด ํ‚ค๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ์œ ํšจํ•œ ARN ๊ฐ’์€ AWS ๋ฌธ์„œ๋ฅผ ๋ณธ๋‹ค.

GCE PD

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard
  fstype: ext4
  replication-type: none
  • type: pd-standard ๋˜๋Š” pd-ssd. ๊ธฐ๋ณธ๊ฐ’: pd-standard

  • zone (์‚ฌ์šฉ ์ค‘๋‹จ): GCE ์˜์—ญ. zone ๊ณผ zones ๋ฅผ ๋ชจ๋‘ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ™œ์„ฑํ™”๋œ ์˜์—ญ์— ๊ฑธ์ณ ๋ณผ๋ฅจ์ด ๋ผ์šด๋“œ ๋กœ๋นˆ์œผ๋กœ ์กฐ์ •๋œ๋‹ค. zone ๊ณผ zones ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

  • zones (์‚ฌ์šฉ ์ค‘๋‹จ): ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋˜๋Š” GCE ์˜์—ญ์˜ ๋ชฉ๋ก. zone ๊ณผ zones ๋ฅผ ๋ชจ๋‘ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ™œ์„ฑํ™”๋œ ์˜์—ญ์— ๊ฑธ์ณ ๋ณผ๋ฅจ์ด ๋ผ์šด๋“œ ๋กœ๋นˆ์œผ๋กœ ์กฐ์ •๋œ๋‹ค. zone ๊ณผ zones ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

  • fstype: ext4 ๋˜๋Š” xfs. ๊ธฐ๋ณธ๊ฐ’: ext4. ์ •์˜๋œ ํŒŒ์ผ์‹œ์Šคํ…œ ์œ ํ˜•์€ ํ˜ธ์ŠคํŠธ ์šด์˜์ฒด์ œ์—์„œ ์ง€์›๋˜์–ด์•ผ ํ•œ๋‹ค.

  • replication-type: none ๋˜๋Š” regional-pd. ๊ธฐ๋ณธ๊ฐ’: none.

replication-type ์„ none ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด (์˜์—ญ) PD๊ฐ€ ํ”„๋กœ๋น„์ „๋œ๋‹ค.

replication-type ์ด regional-pd ๋กœ ์„ค์ •๋˜๋ฉด, ์ง€์—ญ ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ ๊ฐ€ ํ”„๋กœ๋น„์ „๋œ๋‹ค. ์ด๋Š” ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„๊ณผ ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค๋ฅผ ์†Œ๋ชจํ•˜๋Š” ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ง€์—ญ ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ๋Š” ๋‘๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ํ”„๋กœ๋น„์ „๋˜๊ธฐ์— volumeBindingMode: WaitForFirstConsumer ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์˜์—ญ์€ ํŒŒ๋“œ๊ฐ€ ์Šค์ผ€์ค„๋œ ์˜์—ญ๊ณผ ๋™์ผํ•˜๋‹ค. ๋‹ค๋ฅธ ์˜์—ญ์€ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์—์„œ ์ž„์˜๋กœ ์„ ํƒ๋œ๋‹ค. ๋””์Šคํฌ ์˜์—ญ์€ allowedTopologies ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค.

NFS

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: example-nfs
provisioner: example.com/external-nfs
parameters:
  server: nfs-server.example.com
  path: /share
  readOnly: "false"
  • server: NFS ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ๋„ค์ž„ ๋˜๋Š” IP ์ฃผ์†Œ.
  • path: NFS ์„œ๋ฒ„๊ฐ€ ์ต์ŠคํฌํŠธ(export)ํ•œ ๊ฒฝ๋กœ.
  • readOnly: ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋งˆ์šดํŠธํ• ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋ž˜๊ทธ(๊ธฐ๋ณธ๊ฐ’: false).

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—๋Š” ๋‚ด์žฅ NFS ํ”„๋กœ๋น„์ €๋„ˆ๊ฐ€ ์—†๋‹ค. NFS๋ฅผ ์œ„ํ•œ ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์™ธ๋ถ€ ํ”„๋กœ๋น„์ €๋„ˆ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

OpenStack Cinder

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gold
provisioner: kubernetes.io/cinder
parameters:
  availability: nova
  • availability: ๊ฐ€์šฉ์„ฑ ์˜์—ญ. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ์ผ๋ฐ˜์ ์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ™œ์„ฑํ™”๋œ ์˜์—ญ์— ๊ฑธ์ณ ๋ณผ๋ฅจ์ด ๋ผ์šด๋“œ ๋กœ๋นˆ์œผ๋กœ ์กฐ์ •๋œ๋‹ค.

vSphere

vSphere ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค์—๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ํ”„๋กœ๋น„์ €๋‹ ๋„๊ตฌ๊ฐ€ ์žˆ๋‹ค.

์ธ-ํŠธ๋ฆฌ ํ”„๋กœ๋น„์ €๋‹ ๋„๊ตฌ๋Š” ์‚ฌ์šฉ ์ค‘๋‹จ๋˜์—ˆ๋‹ค. CSI ํ”„๋กœ๋น„์ €๋‹ ๋„๊ตฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค vSphere CSI ๋“œ๋ผ์ด๋ฒ„ ๋ฐ vSphereVolume CSI ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ฐธ๊ณ ํ•œ๋‹ค.

CSI ํ”„๋กœ๋น„์ €๋‹ ๋„๊ตฌ

vSphere CSI ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ํ”„๋กœ๋น„์ €๋‹ ๋„๊ตฌ๋Š” Tanzu ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ž‘๋™ํ•œ๋‹ค. ์˜ˆ์‹œ๋Š” vSphere CSI ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

vCP ํ”„๋กœ๋น„์ €๋‹ ๋„๊ตฌ

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” VMware ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž(vCP) ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ํ”„๋กœ๋น„์ €๋‹ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  1. ์‚ฌ์šฉ์ž ์ง€์ • ๋””์Šคํฌ ํ˜•์‹์œผ๋กœ ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: fast
    provisioner: kubernetes.io/vsphere-volume
    parameters:
      diskformat: zeroedthick
    

    diskformat: thin, zeroedthick ์™€ eagerzeroedthick. ๊ธฐ๋ณธ๊ฐ’: "thin".

  2. ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ์ดํ„ฐ์Šคํ† ์–ด์— ๋””์Šคํฌ ํ˜•์‹์œผ๋กœ ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: fast
    provisioner: kubernetes.io/vsphere-volume
    parameters:
        diskformat: zeroedthick
        datastore: VSANDatastore
    

    datastore: ๋˜ํ•œ, ์‚ฌ์šฉ์ž๋Š” ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค์—์„œ ๋ฐ์ดํ„ฐ์Šคํ† ์–ด๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณผ๋ฅจ์€ ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค์— ์ง€์ •๋œ ๋ฐ์ดํ„ฐ์Šคํ† ์–ด์— ์ƒ์„ฑ๋˜๋ฉฐ, ์ด ๊ฒฝ์šฐ VSANDatastore ์ด๋‹ค. ์ด ํ•„๋“œ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋‹ค. ๋ฐ์ดํ„ฐ์Šคํ† ์–ด๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, vSphere ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” vSphere ์„ค์ • ํŒŒ์ผ์— ์ง€์ •๋œ ๋ฐ์ดํ„ฐ์Šคํ† ์–ด์— ๋ณผ๋ฅจ์ด ์ƒ์„ฑ๋œ๋‹ค.

  3. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋‚ด๋ถ€ ์Šคํ† ๋ฆฌ์ง€ ์ •์ฑ…์„ ๊ด€๋ฆฌํ•œ๋‹ค.

    • ๊ธฐ์กด vCenter SPBM ์ •์ฑ…์„ ์‚ฌ์šฉํ•œ๋‹ค.

      vSphere ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ฆฌ์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ์ •์ฑ… ๊ธฐ๋ฐ˜ ๊ด€๋ฆฌ์ด๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ์ •์ฑ… ๊ธฐ๋ฐ˜ ๊ด€๋ฆฌ(Storage Policy Based Management (SPBM))๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ๋ฐ์ดํ„ฐ ์„œ๋น„์Šค์™€ ์Šคํ† ๋ฆฌ์ง€ ์†”๋ฃจ์…˜์—์„œ ๋‹จ์ผ ํ†ตํ•ฉ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์„ ์ œ๊ณตํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์ •์ฑ… ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. SPBM์„ ํ†ตํ•ด vSphere ๊ด€๋ฆฌ์ž๋Š” ์šฉ๋Ÿ‰ ๊ณ„ํš, ์ฐจ๋ณ„ํ™”๋œ ์„œ๋น„์Šค ์ˆ˜์ค€๊ณผ ์šฉ๋Ÿ‰์˜ ํ—ค๋“œ๋ฃธ(headroom) ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ์„ ํ–‰ ์Šคํ† ๋ฆฌ์ง€ ํ”„๋กœ๋น„์ €๋‹ ๋ฌธ์ œ๋ฅผ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

      SPBM ์ •์ฑ…์€ storagePolicyName ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค์—์„œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋‚ด๋ถ€์˜ ๊ฐ€์ƒ SAN ์ •์ฑ… ์ง€์›

      Vsphere ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜(Vsphere Infrastructure (VI)) ๊ด€๋ฆฌ์ž๋Š” ๋™์  ๋ณผ๋ฅจ ํ”„๋กœ๋น„์ €๋‹ ์ค‘์— ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€์ƒ SAN ์Šคํ† ๋ฆฌ์ง€ ๊ธฐ๋Šฅ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ ๋™์  ๋ณผ๋ฅจ ํ”„๋กœ๋น„์ €๋‹ ์ค‘์— ์Šคํ† ๋ฆฌ์ง€ ๊ธฐ๋Šฅ์˜ ํ˜•ํƒœ๋กœ ์„ฑ๋Šฅ ๋ฐ ๊ฐ€์šฉ์„ฑ๊ณผ ๊ฐ™์€ ์Šคํ† ๋ฆฌ์ง€ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ์€ ๊ฐ€์ƒ SAN ์ •์ฑ…์œผ๋กœ ๋ณ€ํ™˜๋œ ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ(๊ฐ€์ƒ ๋””์Šคํฌ)์„ ์ƒ์„ฑํ•  ๋•Œ ๊ฐ€์ƒ SAN ๊ณ„์ธต์œผ๋กœ ํ‘ธ์‹œ๋œ๋‹ค. ๊ฐ€์ƒ ๋””์Šคํฌ๋Š” ๊ฐ€์ƒ SAN ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด์— ๋ถ„์‚ฐ๋˜์–ด ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑ์‹œํ‚ค๊ฒŒ ๋œ๋‹ค.

      ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ ๊ด€๋ฆฌ์— ์Šคํ† ๋ฆฌ์ง€ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณผ๋ฅจ์˜ ๋™์  ํ”„๋กœ๋น„์ €๋‹์„ ์œ„ํ•œ ์Šคํ† ๋ฆฌ์ง€ ์ •์ฑ… ๊ธฐ๋ฐ˜ ๊ด€๋ฆฌ(SPBM)๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

vSphere์šฉ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋‚ด์—์„œ ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ ๊ด€๋ฆฌ๋ฅผ ์‹œ๋„ํ•˜๋Š” vSphere ์˜ˆ์‹œ๋Š” ๊ฑฐ์˜ ์—†๋‹ค.

Ceph RBD

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
provisioner: kubernetes.io/rbd
parameters:
  monitors: 10.16.153.105:6789
  adminId: kube
  adminSecretName: ceph-secret
  adminSecretNamespace: kube-system
  pool: kube
  userId: kube
  userSecretName: ceph-secret-user
  userSecretNamespace: default
  fsType: ext4
  imageFormat: "2"
  imageFeatures: "layering"
  • monitors: ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ Ceph ๋ชจ๋‹ˆํ„ฐ. ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•„์ˆ˜์ด๋‹ค.

  • adminId: ํ’€์— ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” Ceph ํด๋ผ์ด์–ธํŠธ ID. ๊ธฐ๋ณธ๊ฐ’์€ "admin".

  • adminSecretName: adminId ์˜ ์‹œํฌ๋ฆฟ ์ด๋ฆ„. ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•„์ˆ˜์ด๋‹ค. ์ œ๊ณต๋œ ์‹œํฌ๋ฆฟ์€ "kubernetes.io/rbd" ์œ ํ˜•์ด์–ด์•ผ ํ•œ๋‹ค.

  • adminSecretNamespace: adminSecretName ์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค. ๊ธฐ๋ณธ๊ฐ’์€ "default".

  • pool: Ceph RBD ํ’€. ๊ธฐ๋ณธ๊ฐ’์€ "rbd".

  • userId: RBD ์ด๋ฏธ์ง€๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” Ceph ํด๋ผ์ด์–ธํŠธ ID. ๊ธฐ๋ณธ๊ฐ’์€ adminId ์™€ ๋™์ผํ•˜๋‹ค.

  • userSecretName: RDB ์ด๋ฏธ์ง€๋ฅผ ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•œ userId ์— ๋Œ€ํ•œ Ceph ์‹œํฌ๋ฆฟ ์ด๋ฆ„. PVC์™€ ๋™์ผํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค. ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•„์ˆ˜์ด๋‹ค. ์ œ๊ณต๋œ ์‹œํฌ๋ฆฟ์€ "kubernetes.io/rbd" ์œ ํ˜•์ด์–ด์•ผ ํ•˜๋ฉฐ, ๋‹ค์Œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

    kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" \
      --from-literal=key='QVFEQ1pMdFhPUnQrSmhBQUFYaERWNHJsZ3BsMmNjcDR6RFZST0E9PQ==' \
      --namespace=kube-system
    
  • userSecretNamespace: userSecretName ์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค.

  • fsType: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์ง€์›ํ•˜๋Š” fsType. ๊ธฐ๋ณธ๊ฐ’: "ext4".

  • imageFormat: Ceph RBD ์ด๋ฏธ์ง€ ํ˜•์‹, "1" ๋˜๋Š” "2". ๊ธฐ๋ณธ๊ฐ’์€ "2".

  • imageFeatures: ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ, imageFormat ์„ "2"๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ํ˜„์žฌ layering ์—์„œ๋งŒ ๊ธฐ๋Šฅ์ด ์ง€์›๋œ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ""์ด๋ฉฐ, ๊ธฐ๋Šฅ์ด ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

Azure ๋””์Šคํฌ

Azure ๋น„๊ด€๋ฆฌ ๋””์Šคํฌ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow
provisioner: kubernetes.io/azure-disk
parameters:
  skuName: Standard_LRS
  location: eastus
  storageAccount: azure_storage_account_name
  • skuName: Azure ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ • Sku ๊ณ„์ธต. ๊ธฐ๋ณธ๊ฐ’์€ ์—†์Œ.
  • location: Azure ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ • ์ง€์—ญ. ๊ธฐ๋ณธ๊ฐ’์€ ์—†์Œ.
  • storageAccount: Azure ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ • ์ด๋ฆ„. ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ •์ด ์ œ๊ณต๋˜๋ฉด, ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน์— ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, location ์€ ๋ฌด์‹œ๋œ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ •์ด ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด, ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน์— ์ƒˆ ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ •์ด ์ƒ์„ฑ๋œ๋‹ค.

Azure ๋””์Šคํฌ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค(v1.7.2๋ถ€ํ„ฐ ์ œ๊ณต)

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow
provisioner: kubernetes.io/azure-disk
parameters:
  storageaccounttype: Standard_LRS
  kind: managed
  • storageaccounttype: Azure ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ • Sku ๊ณ„์ธต. ๊ธฐ๋ณธ๊ฐ’์€ ์—†์Œ.
  • kind: ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ shared, dedicated, ๊ทธ๋ฆฌ๊ณ  managed (๊ธฐ๋ณธ๊ฐ’) ์ด๋‹ค. kind ๊ฐ€ shared ์ธ ๊ฒฝ์šฐ, ๋ชจ๋“  ๋น„๊ด€๋ฆฌ ๋””์Šคํฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน์— ์žˆ๋Š” ๋ช‡ ๊ฐœ์˜ ๊ณต์œ  ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ •์— ์ƒ์„ฑ๋œ๋‹ค. kind ๊ฐ€ dedicated ์ธ ๊ฒฝ์šฐ, ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน์—์„œ ์ƒˆ๋กœ์šด ๋น„๊ด€๋ฆฌ ๋””์Šคํฌ์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ์ „์šฉ ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ •์ด ์ƒ์„ฑ๋œ๋‹ค. kind ๊ฐ€ managed ์ธ ๊ฒฝ์šฐ, ๋ชจ๋“  ๊ด€๋ฆฌ ๋””์Šคํฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน์— ์ƒ์„ฑ๋œ๋‹ค.
  • resourceGroup: Azure ๋””์Šคํฌ๋ฅผ ๋งŒ๋“ค ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน์„ ์ง€์ •ํ•œ๋‹ค. ๊ธฐ์กด์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน ์ด๋ฆ„์ด์–ด์•ผ ํ•œ๋‹ค. ์ง€์ •๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ๋””์Šคํฌ๋Š” ํ˜„์žฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน์— ๋ฐฐ์น˜๋œ๋‹ค.
  • ํ”„๋ฆฌ๋ฏธ์—„ VM์€ ํ‘œ์ค€ LRS(Standard_LRS)์™€ ํ”„๋ฆฌ๋ฏธ์—„ LRS(Premium_LRS) ๋””์Šคํฌ๋ฅผ ๋ชจ๋‘ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด์—, ํ‘œ์ค€ VM์€ ํ‘œ์ค€ LRS(Standard_LRS) ๋””์Šคํฌ๋งŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ด€๋ฆฌ๋˜๋Š” VM์€ ๊ด€๋ฆฌ๋˜๋Š” ๋””์Šคํฌ๋งŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ , ๋น„๊ด€๋ฆฌ VM์€ ๋น„๊ด€๋ฆฌ ๋””์Šคํฌ๋งŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

Azure ํŒŒ์ผ

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: azurefile
provisioner: kubernetes.io/azure-file
parameters:
  skuName: Standard_LRS
  location: eastus
  storageAccount: azure_storage_account_name
  • skuName: Azure ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ • Sku ๊ณ„์ธต. ๊ธฐ๋ณธ๊ฐ’์€ ์—†์Œ.
  • location: Azure ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ • ์ง€์—ญ. ๊ธฐ๋ณธ๊ฐ’์€ ์—†์Œ.
  • storageAccount: Azure ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ • ์ด๋ฆ„. ๊ธฐ๋ณธ๊ฐ’์€ ์—†์Œ. ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ •์ด ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด, ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ •์ด ๊ฒ€์ƒ‰๋˜์–ด skuName ๊ณผ location ์ด ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ์ฐพ๋Š”๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ •์ด ์ œ๊ณต๋˜๋ฉด, ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน์— ์žˆ์–ด์•ผ ํ•˜๋ฉฐ skuName ๊ณผ location ์€ ๋ฌด์‹œ๋œ๋‹ค.
  • secretNamespace: Azure ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ • ์ด๋ฆ„๊ณผ ํ‚ค๊ฐ€ ํฌํ•จ๋œ ์‹œํฌ๋ฆฟ ๋„ค์ž„์ŠคํŽ˜์ด์Šค. ๊ธฐ๋ณธ๊ฐ’์€ ํŒŒ๋“œ์™€ ๋™์ผํ•˜๋‹ค.
  • secretName: Azure ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ • ์ด๋ฆ„๊ณผ ํ‚ค๊ฐ€ ํฌํ•จ๋œ ์‹œํฌ๋ฆฟ ์ด๋ฆ„. ๊ธฐ๋ณธ๊ฐ’์€ azure-storage-account-<accountName>-secret
  • readOnly: ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋งˆ์šดํŠธ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋ž˜๊ทธ. ์ฝ๊ธฐ/์“ฐ๊ธฐ ๋งˆ์šดํŠธ๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ธฐ๋ณธ๊ฐ’์€ false. ์ด ์„ค์ •์€ ๋ณผ๋ฅจ๋งˆ์šดํŠธ(VolumeMounts)์˜ ReadOnly ์„ค์ •์—๋„ ์˜ํ–ฅ์„ ์ค€๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ํ”„๋กœ๋น„์ €๋‹ ์ค‘์— ๋งˆ์šดํŠธ ์ž๊ฒฉ์ฆ๋ช…์— ๋Œ€ํ•ด secretName ์ด๋ผ๋Š” ์‹œํฌ๋ฆฟ์ด ์ƒ์„ฑ๋œ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์— RBAC๊ณผ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋กค(role)๋“ค์„ ๋ชจ๋‘ ํ™œ์„ฑํ™”ํ•œ ๊ฒฝ์šฐ, clusterrole system:controller:persistent-volume-binder ์— ๋Œ€ํ•œ secret ๋ฆฌ์†Œ์Šค์— create ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

๋‹ค์ค‘ ํ…Œ๋„Œ์‹œ ์ปจํ…์ŠคํŠธ์—์„œ secretNamespace ์˜ ๊ฐ’์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ • ์ž๊ฒฉ์ฆ๋ช…์„ ์ฝ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Portworx ๋ณผ๋ฅจ

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: portworx-io-priority-high
provisioner: kubernetes.io/portworx-volume
parameters:
  repl: "1"
  snap_interval:   "70"
  priority_io:  "high"
  • fs: ๋ฐฐ์น˜ํ•  ํŒŒ์ผ ์‹œ์Šคํ…œ: none/xfs/ext4 (๊ธฐ๋ณธ๊ฐ’: ext4)
  • block_size: Kbytes ๋‹จ์œ„์˜ ๋ธ”๋ก ํฌ๊ธฐ(๊ธฐ๋ณธ๊ฐ’: 32).
  • repl: ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒฉํ„ฐ 1..3 (๊ธฐ๋ณธ๊ฐ’: 1)์˜ ํ˜•ํƒœ๋กœ ์ œ๊ณต๋  ๋™๊ธฐ ๋ ˆํ”Œ๋ฆฌ์นด์˜ ์ˆ˜. ์—ฌ๊ธฐ์—๋Š” ๋ฌธ์ž์—ด, ์ฆ‰ 0 ์ด ์•„๋‹Œ, "0" ์ด ํ•„์š”ํ•˜๋‹ค.
  • priority_io: ๋ณผ๋ฅจ์ด ๊ณ ์„ฑ๋Šฅ ๋˜๋Š” ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์Šคํ† ๋ฆฌ์ง€์—์„œ ์ƒ์„ฑ๋  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค high/medium/low (๊ธฐ๋ณธ๊ฐ’: low).
  • snap_interval: ์Šค๋ƒ…์ƒท์„ ํŠธ๋ฆฌ๊ฑฐํ•  ๋•Œ์˜ ์‹œ๊ฐ/์‹œ๊ฐ„ ๊ฐ„๊ฒฉ(๋ถ„). ์Šค๋ƒ…์ƒท์€ ์ด์ „ ์Šค๋ƒ…์ƒท๊ณผ์˜ ์ฐจ์ด์— ๋”ฐ๋ผ ์ฆ๋ถ„๋˜๋ฉฐ, 0์€ ์Šค๋ƒ…์„ ๋น„ํ™œ์„ฑํ™” ํ•œ๋‹ค(๊ธฐ๋ณธ๊ฐ’: 0). ์—ฌ๊ธฐ์—๋Š” ๋ฌธ์ž์—ด, ์ฆ‰ 70 ์ด ์•„๋‹Œ, "70" ์ด ํ•„์š”ํ•˜๋‹ค.
  • aggregation_level: ๋ณผ๋ฅจ์ด ๋ถ„๋ฐฐ๋  ์ฒญํฌ ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉฐ, 0์€ ์ง‘๊ณ„๋˜์ง€ ์•Š์€ ๋ณผ๋ฅจ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค(๊ธฐ๋ณธ๊ฐ’: 0). ์—ฌ๊ธฐ์—๋Š” ๋ฌธ์ž์—ด, ์ฆ‰ 0 ์ด ์•„๋‹Œ, "0" ์ด ํ•„์š”ํ•˜๋‹ค.
  • ephemeral: ๋งˆ์šดํŠธ ํ•ด์ œ ํ›„ ๋ณผ๋ฅจ์„ ์ •๋ฆฌํ•ด์•ผ ํ•˜๋Š”์ง€ ํ˜น์€ ์ง€์†์ ์ด์–ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ง€์ •ํ•œ๋‹ค. emptyDir ์— ๋Œ€ํ•œ ์œ ์Šค์ผ€์ด์Šค๋Š” ์ด ๊ฐ’์„ true๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, persistent volumes ์— ๋Œ€ํ•œ ์œ ์Šค์ผ€์ด์Šค์ธ ์นด์‚ฐ๋“œ๋ผ์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” false๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค. true/false (๊ธฐ๋ณธ๊ฐ’ false) ์—ฌ๊ธฐ์—๋Š” ๋ฌธ์ž์—ด, ์ฆ‰ true ๊ฐ€ ์•„๋‹Œ, "true" ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

Local

๊ธฐ๋Šฅ ์ƒํƒœ: Kubernetes v1.14 [stable]
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

๋กœ์ปฌ ๋ณผ๋ฅจ์€ ํ˜„์žฌ ๋™์  ํ”„๋กœ๋น„์ €๋‹์„ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ, ํŒŒ๋“œ ์Šค์ผ€์ค„๋ง๊นŒ์ง€ ๋ณผ๋ฅจ ๋ฐ”์ธ๋”ฉ์„ ์ง€์—ฐ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค๊ฐ€ ์—ฌ์ „ํžˆ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๊ฒƒ์€ WaitForFirstConsumer ๋ณผ๋ฅจ ๋ฐ”์ธ๋”ฉ ๋ชจ๋“œ์— ์˜ํ•ด ์ง€์ •๋œ๋‹ค.

๋ณผ๋ฅจ ๋ฐ”์ธ๋”ฉ์„ ์ง€์—ฐ์‹œํ‚ค๋ฉด ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์— ์ ์ ˆํ•œ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์„ ์„ ํƒํ•  ๋•Œ ํŒŒ๋“œ์˜ ๋ชจ๋“  ์Šค์ผ€์ค„๋ง ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋‹ค.

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