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๋ก ์ค์ ๋ ๊ฒฝ์ฐ ๋ณผ๋ฅจ ํ์ฅ์ ์ง์ํ๋ค.
๋ณผ๋ฅจ ์ ํ | ์๊ตฌ๋๋ ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ |
---|---|
gcePersistentDisk | 1.11 |
awsElasticBlockStore | 1.11 |
Cinder | 1.11 |
rbd | 1.11 |
Azure File | 1.11 |
Azure Disk | 1.11 |
Portworx | 1.11 |
FlexVolume | 1.13 |
CSI | 1.14 (alpha), 1.16 (beta) |
์ฐธ๊ณ :
๋ณผ๋ฅจ ํ์ฅ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ ๋ณผ๋ฅจ์ ํ์ฅํ ์ ์์ง๋ง, ๋ณผ๋ฅจ์ ์ถ์ํ ์๋ ์๋ค.๋ง์ดํธ ์ต์
์คํ ๋ฆฌ์งํด๋์ค์ ์ํด ๋์ ์ผ๋ก ์์ฑ๋ ํผ์์คํดํธ๋ณผ๋ฅจ์
ํด๋์ค์ mountOptions
ํ๋์ ์ง์ ๋ ๋ง์ดํธ ์ต์
์ ๊ฐ์ง๋ค.
๋ง์ฝ ๋ณผ๋ฅจ ํ๋ฌ๊ทธ์ธ์ด ๋ง์ดํธ ์ต์ ์ ์ง์ํ์ง ์๋๋ฐ, ๋ง์ดํธ ์ต์ ์ ์ง์ ํ๋ฉด ํ๋ก๋น์ ๋์ ์คํจํ๋ค. ๋ง์ดํธ ์ต์ ์ ํด๋์ค ๋๋ PV์์ ๊ฒ์ฆ๋์ง ์๋๋ค. PV ๋ง์ดํธ๊ฐ ์ ํจํ์ง ์์ผ๋ฉด, ๋ง์ดํธ๊ฐ ์คํจํ๊ฒ ๋๋ค.
๋ณผ๋ฅจ ๋ฐ์ธ๋ฉ ๋ชจ๋
volumeBindingMode
ํ๋๋ ๋ณผ๋ฅจ ๋ฐ์ธ๋ฉ๊ณผ ๋์
ํ๋ก๋น์ ๋์ ์์ ์๊ธฐ๋ฅผ ์ ์ดํ๋ค. ์ค์ ๋์ด ์์ง ์์ผ๋ฉด, Immediate
๋ชจ๋๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉ๋๋ค.
Immediate
๋ชจ๋๋ ํผ์์คํดํธ๋ณผ๋ฅจํด๋ ์์ด ์์ฑ๋๋ฉด ๋ณผ๋ฅจ
๋ฐ์ธ๋ฉ๊ณผ ๋์ ํ๋ก๋น์ ๋์ด ์ฆ์ ๋ฐ์ํ๋ ๊ฒ์ ๋ํ๋ธ๋ค. ํ ํด๋ก์ง ์ ์ฝ์ด
์๊ณ ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋
ธ๋์์ ์ ์ญ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ ์คํ ๋ฆฌ์ง
๋ฐฑ์๋์ ๊ฒฝ์ฐ, ํ๋์ ์ค์ผ์ค๋ง ์๊ตฌ ์ฌํญ์ ๋ํ ์ง์ ์์ด ํผ์์คํดํธ๋ณผ๋ฅจ์ด
๋ฐ์ธ๋ฉ๋๊ฑฐ๋ ํ๋ก๋น์ ๋๋๋ค. ์ด๋ก ์ธํด ์ค์ผ์ค๋์ง ์์ ํ๋๊ฐ ๋ฐ์ํ ์ ์๋ค.
ํด๋ฌ์คํฐ ๊ด๋ฆฌ์๋ WaitForFirstConsumer
๋ชจ๋๋ฅผ ์ง์ ํด์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋๋ฐ
์ด ๋ชจ๋๋ ํผ์์คํดํธ๋ณผ๋ฅจํด๋ ์์ ์ฌ์ฉํ๋ ํ๋๊ฐ ์์ฑ๋ ๋๊น์ง ํผ์์คํดํธ๋ณผ๋ฅจ์ ๋ฐ์ธ๋ฉ๊ณผ ํ๋ก๋น์ ๋์ ์ง์ฐ์ํจ๋ค.
ํผ์์คํดํธ๋ณผ๋ฅจ์ ํ๋์ ์ค์ผ์ค๋ง ์ ์ฝ ์กฐ๊ฑด์ ์ํด ์ง์ ๋ ํ ํด๋ก์ง์
๋ฐ๋ผ ์ ํ๋๊ฑฐ๋ ํ๋ก๋น์ ๋๋ค. ์ฌ๊ธฐ์๋
๋ฆฌ์์ค ์๊ตฌ ์ฌํญ,
๋
ธ๋ ์
๋ ํฐ,
ํ๋ ์ดํผ๋ํฐ(affinity)์
์ํฐ-์ดํผ๋ํฐ(anti-affinity)
๊ทธ๋ฆฌ๊ณ ํ
์ธํธ(taint)์ ํจ๋ฌ๋ ์ด์
(toleration)์ด ํฌํจ๋๋ค.
๋ค์ ํ๋ฌ๊ทธ์ธ์ ๋์ ํ๋ก๋น์ ๋๊ณผ WaitForFirstConsumer
๋ฅผ ์ง์ํ๋ค.
๋ค์ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ ์ ์์ฑ๋ ํผ์์คํดํธ๋ณผ๋ฅจ ๋ฐ์ธ๋ฉ์ผ๋ก WaitForFirstConsumer
๋ฅผ ์ง์ํ๋ค.
- ์์์ ์ธ๊ธํ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ
- Local
Kubernetes v1.17 [stable]
์ฐธ๊ณ :
WaitForFirstConsumer
๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ๋
ธ๋ ์ดํผ๋ํฐ๋ฅผ ์ง์ ํ๊ธฐ ์ํด์ ํ๋ ์คํ์ nodeName
์ ์ฌ์ฉํ์ง๋ ์์์ผ ํ๋ค.
๋ง์ฝ nodeName
์ ์ฌ์ฉํ๋ค๋ฉด, ์ค์ผ์ค๋ฌ๊ฐ ๋ฐ์ดํจ์ค๋๊ณ PVC๊ฐ pending
์ํ๋ก ์์ ๊ฒ์ด๋ค.
๋์ , ์๋์ ๊ฐ์ด ํธ์คํธ๋ค์์ ์ด์ฉํ๋ ๋ ธ๋์ ๋ ํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
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 ๋ฌธ์๋ฅผ ๋ณธ๋ค.
์ฐธ๊ณ :
zone
๊ณผ zones
ํ๋ผ๋ฏธํฐ๋ ์ฌ์ฉ ์ค๋จ ๋์์ผ๋ฉฐ,
allowedTopologies๋ก ๋์ฒด๋์๋ค.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
๋ฅผ
์ฌ์ฉํ๋ฉด ๋ ์ ํํ ์ ์๋ค.
์ฐธ๊ณ :
zone
๊ณผ zones
ํ๋ผ๋ฏธํฐ๋ ์ฌ์ฉ ์ค๋จ ๋์์ผ๋ฉฐ,
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
: ๊ฐ์ฉ์ฑ ์์ญ. ์ง์ ํ์ง ์์ผ๋ฉด, ์ผ๋ฐ์ ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ ๋ ธ๋๊ฐ ์๋ ๋ชจ๋ ํ์ฑํ๋ ์์ญ์ ๊ฑธ์ณ ๋ณผ๋ฅจ์ด ๋ผ์ด๋ ๋ก๋น์ผ๋ก ์กฐ์ ๋๋ค.
์ฐธ๊ณ :
Kubernetes v1.11 [deprecated]
์ด OpenStack ๋ด๋ถ ํ๋ก๋น์ ๋๋ ์ฌ์ฉ ์ค๋จ ๋์๋ค. OpenStack์ฉ ์ธ๋ถ ํด๋ผ์ฐ๋ ๊ณต๊ธ์๋ฅผ ์ฌ์ฉํ๋ค.
vSphere
vSphere ์คํ ๋ฆฌ์ง ํด๋์ค์๋ ๋ ๊ฐ์ง ์ ํ์ ํ๋ก๋น์ ๋ ๋๊ตฌ๊ฐ ์๋ค.
- CSI ํ๋ก๋น์ ๋ ๋๊ตฌ:
csi.vsphere.vmware.com
- vCP ํ๋ก๋น์ ๋ ๋๊ตฌ:
kubernetes.io/vsphere-volume
์ธ-ํธ๋ฆฌ ํ๋ก๋น์ ๋ ๋๊ตฌ๋ ์ฌ์ฉ ์ค๋จ๋์๋ค. CSI ํ๋ก๋น์ ๋ ๋๊ตฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฟ ๋ฒ๋คํฐ์ค vSphere CSI ๋๋ผ์ด๋ฒ ๋ฐ vSphereVolume CSI ๋ง์ด๊ทธ๋ ์ด์ ์ ์ฐธ๊ณ ํ๋ค.
CSI ํ๋ก๋น์ ๋ ๋๊ตฌ
vSphere CSI ์คํ ๋ฆฌ์งํด๋์ค ํ๋ก๋น์ ๋ ๋๊ตฌ๋ Tanzu ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์์ ์๋ํ๋ค. ์์๋ vSphere CSI ๋ฆฌํฌ์งํฐ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ค.
vCP ํ๋ก๋น์ ๋ ๋๊ตฌ
๋ค์ ์์์์๋ VMware ํด๋ผ์ฐ๋ ๊ณต๊ธ์(vCP) ์คํ ๋ฆฌ์งํด๋์ค ํ๋ก๋น์ ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ค.
์ฌ์ฉ์ ์ง์ ๋์คํฌ ํ์์ผ๋ก ์คํ ๋ฆฌ์งํด๋์ค๋ฅผ ์์ฑํ๋ค.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast provisioner: kubernetes.io/vsphere-volume parameters: diskformat: zeroedthick
diskformat
:thin
,zeroedthick
์eagerzeroedthick
. ๊ธฐ๋ณธ๊ฐ:"thin"
.์ฌ์ฉ์ ์ง์ ๋ฐ์ดํฐ์คํ ์ด์ ๋์คํฌ ํ์์ผ๋ก ์คํ ๋ฆฌ์งํด๋์ค๋ฅผ ์์ฑํ๋ค.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast provisioner: kubernetes.io/vsphere-volume parameters: diskformat: zeroedthick datastore: VSANDatastore
datastore
: ๋ํ, ์ฌ์ฉ์๋ ์คํ ๋ฆฌ์งํด๋์ค์์ ๋ฐ์ดํฐ์คํ ์ด๋ฅผ ์ง์ ํ ์ ์๋ค. ๋ณผ๋ฅจ์ ์คํ ๋ฆฌ์งํด๋์ค์ ์ง์ ๋ ๋ฐ์ดํฐ์คํ ์ด์ ์์ฑ๋๋ฉฐ, ์ด ๊ฒฝ์ฐVSANDatastore
์ด๋ค. ์ด ํ๋๋ ์ ํ ์ฌํญ์ด๋ค. ๋ฐ์ดํฐ์คํ ์ด๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด, vSphere ํด๋ผ์ฐ๋ ๊ณต๊ธ์๋ฅผ ์ด๊ธฐํํ๋๋ฐ ์ฌ์ฉ๋๋ vSphere ์ค์ ํ์ผ์ ์ง์ ๋ ๋ฐ์ดํฐ์คํ ์ด์ ๋ณผ๋ฅจ์ด ์์ฑ๋๋ค.์ฟ ๋ฒ๋คํฐ์ค ๋ด๋ถ ์คํ ๋ฆฌ์ง ์ ์ฑ ์ ๊ด๋ฆฌํ๋ค.
๊ธฐ์กด 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
๋ณผ๋ฅจ ๋ฐ์ธ๋ฉ ๋ชจ๋์ ์ํด ์ง์ ๋๋ค.
๋ณผ๋ฅจ ๋ฐ์ธ๋ฉ์ ์ง์ฐ์ํค๋ฉด ์ค์ผ์ค๋ฌ๊ฐ ํผ์์คํดํธ๋ณผ๋ฅจํด๋ ์์ ์ ์ ํ ํผ์์คํดํธ๋ณผ๋ฅจ์ ์ ํํ ๋ ํ๋์ ๋ชจ๋ ์ค์ผ์ค๋ง ์ ์ฝ ์กฐ๊ฑด์ ๊ณ ๋ คํ ์ ์๋ค.