/
8. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ๋ฐ ๋ณผ๋ฅจ

8. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ๋ฐ ๋ณผ๋ฅจ


1. Resource Policies

2.1 Request / Limit (์ตœ์†Œ์š”๊ตฌ์‚ฌํ•ญ/์ตœ๋Œ€ ์‚ฌ์šฉ๋Ÿ‰)

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ํŒŒ๋“œ๋ฅผ ์–ด๋Š ๋…ธ๋“œ์— ๋ฐฐํฌํ• ์ง€ ์Šค์ผ€์ฅด๋ง ํ•  ๋•Œ, ์Šค์ผ€์ฅด๋ง์ด ๋  ๋…ธ๋“œ์— ํ•ด๋‹น ํŒŒ๋“œ๊ฐ€ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ์ž์›์ด ํ™•๋ณด๊ฐ€ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ํŒŒ๋“œ(์ปจํ…Œ์ด๋„ˆ)์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ์–‘์„ ๋ช…์‹œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • cpu/memory์™€ ๊ฐ™์€ ์ปดํ“จํŠธ ๋ฆฌ์†Œ์Šค ์™ธ์—๋„ gpu/storage ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ฟผํ„ฐ๋„ ์ง€์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • CPU๋Š” m(๋ฐ€๋ฆฌ์ฝ”์–ด, 1์ฝ”์–ด=1000๋ฐ€๋ฆฌ์ฝ”์–ด) ๋‹จ์œ„๋กœ ์ง€์ •ํ•˜๋ฉฐ, ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์— ์–ด๋Š์ •๋„์˜ CPU๋ฅผ ํ• ๋‹นํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ๋Š” Mi(Mib)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

8/00-pod-resource.yaml

--- apiVersion: v1 kind: Pod metadata: name: frontend spec: containers: - name: app image: nginx:latest resources: requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m" - name: log-aggregator image: rancher/log-aggregator:v0.1.8 resources: requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m"

ย 

metrics-server๋ฅผ ์ด์šฉํ•œ ๋…ธ๋“œ ๋ณ„ ๋ฆฌ์†Œ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง

root@k8s-master01:~# kubectl top nodes | sort -n -k 2 NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% k8s-worker02 114m 1% 4030Mi 25% k8s-worker01 176m 2% 3196Mi 20% k8s-master03 279m 3% 4727Mi 29% k8s-master02 347m 4% 4144Mi 26% k8s-master01 414m 5% 4557Mi 28%

ย 

metrics-server๋ฅผ ์ด์šฉํ•œ ํŒŒ๋“œ ๋ณ„ ๋ฆฌ์†Œ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง

root@k8s-master01:~# kubectl -n kube-system top pod | sort -n -k 2 NAME CPU(cores) MEMORY(bytes) nginx-proxy-k8s-worker01 1m 16Mi nginx-proxy-k8s-worker02 1m 17Mi dns-autoscaler-59b8867c86-hjkvs 2m 7Mi kube-controller-manager-k8s-master02 4m 19Mi kube-controller-manager-k8s-master03 4m 19Mi nodelocaldns-rdkbl 4m 15Mi coredns-588bb58b94-9qcvw 5m 16Mi kube-scheduler-k8s-master02 5m 20Mi nodelocaldns-sd99v 5m 10Mi coredns-588bb58b94-zcnvc 6m 14Mi kube-proxy-h584h 7m 22Mi kube-scheduler-k8s-master03 7m 19Mi nodelocaldns-9vlvr 7m 9Mi nodelocaldns-b8gpm 7m 9Mi metrics-server-6f77f96b88-v5jjs 8m 17Mi nodelocaldns-r4sjf 8m 16Mi kube-scheduler-k8s-master01 9m 21Mi kube-proxy-x8gcq 12m 22Mi calico-kube-controllers-75748cc9fd-gqdzw 13m 21Mi kube-proxy-w87v4 13m 15Mi kube-proxy-96tsm 20m 15Mi kube-proxy-tj8pv 24m 14Mi kube-controller-manager-k8s-master01 36m 52Mi calico-node-87g22 42m 85Mi calico-node-kk5vn 51m 84Mi calico-node-wckv7 51m 85Mi calico-node-8278d 64m 91Mi etcd-k8s-master02 70m 89Mi calico-node-4hzx4 71m 109Mi kube-apiserver-k8s-master02 77m 303Mi etcd-k8s-master03 81m 84Mi kube-apiserver-k8s-master01 94m 349Mi etcd-k8s-master01 99m 95Mi kube-apiserver-k8s-master03 111m 310Mi

ย 

2.2 ResourceQuota

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์šด์˜ ์‹œ ํŠน์ • ํŒ€์—์„œ ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”๊ตฌํ•  ๊ฒฝ์šฐ ResourceQuota๋ฅผ ์ด์šฉํ•˜์—ฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ณ„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์˜ ์–‘์„ ์ •ํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆ ๋งˆ๋‹ค ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ์–‘์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Resource Name

Description

Resource Name

Description

limits.cpu

Across all pods in a non-terminal state, the sum of CPU limits cannot exceed this value.

limits.memory

Across all pods in a non-terminal state, the sum of memory limits cannot exceed this value.

requests.cpu

Across all pods in a non-terminal state, the sum of CPU requests cannot exceed this value.

requests.memory

Across all pods in a non-terminal state, the sum of memory requests cannot exceed this value.

hugepages-<size>

Across all pods in a non-terminal state, the number of huge page requests of the specified size cannot exceed this value.

cpu

Same as requests.cpu

memory

Same as requests.memory

ย 

  • ์ฟผํ„ฐ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํŠน์ • ์šฐ์„  ์ˆœ์œ„์˜ ํŒŒ๋“œ์™€ ์ผ์น˜ ์‹œํ‚ค๋ฉฐ, "low(๋‚ฎ์Œ)", "medium(์ค‘๊ฐ„)", "high(๋†’์Œ)"์˜ ์„ธ ๊ฐ€์ง€ ์šฐ์„  ์ˆœ์œ„ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

8/01-resourcequota.yaml

ย 

8/02-resourcequota-test.yaml

ย 

2.3 LimitRange

  • ResourceQuota๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œํ•œํ•˜๊ณ , LimitRange๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด ํŒŒ๋“œ(์ปจํ…Œ์ด๋„ˆ)์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

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

8/03-limitrange.yaml

ย 

8/04-limitrange-test.yaml

ย 

# kubectl get event --sort-by='lastTimestamp'
LAST SEEN TYPE REASON OBJECT MESSAGE
78s Warning FailedCreate replicaset/nginx-deployment-8579d7f98c Error creating: pods "nginx-deployment-8579d7f98c-mxw8q" is forbidden: maximum cpu usage per Pod is 800m, but limit is 1500m

ย 

ย 


2. Label & Selector

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์Šค์ผ€์ค„๋ง์— ํฌํ•จ๋œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

  • ๋…ธ๋“œ-ํŒŒ๋“œ๋„ Label&Selector๋ฅผ ์ด์šฉํ•˜์—ฌ ๋…ธ๋“œ์˜ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ , ์„œ๋น„์Šค-ํŒŒ๋“œ๋„ Label&Selector๋ฅผ ์ด์šฉํ•˜์—ฌ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • Label

    • Label์€ Pod์™€ ๊ฐ™์€ ๊ฐ์ฒด์— ์—ฐ๊ฒฐ๋œ ํ‚ค/๊ฐ’ ์Œ์ž…๋‹ˆ๋‹ค.

    • ๋ฆฌ์†Œ์Šค๋ฅผ ๋…ผ๋ฆฌ์ ์ธ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„๊ฑฐ๋‚˜, ์‹๋ณ„์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ๋ถ™์ด๋Š” ์ด๋ฆ„ํ‘œ์ž…๋‹ˆ๋‹ค.

    • Label์€ ์ƒ์„ฑ ์‹œ ๊ฐ์ฒด์— ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‚˜์ค‘์— ์–ธ์ œ๋“ ์ง€ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Selector

    • ํŠน์ • Label์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2.1 Node Label

2.2 Pod Selector

8/05-pod-selector.yaml

ย 


3. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ณผ๋ฅจ

ย 

์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์‹ค์Šต์„ ํ†ตํ•ด Pod๋ฅผ ๋ฐฐํฌํ•˜๊ณ  Service๋ฅผ ๋งŒ๋“ค์–ด ์ ‘์† ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ์žฅ ์—์„œ๋Š” Pod์— ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ Volume ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์‹ค์Šต ํ•ด ๋ด…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ pod์˜ ๋ชจ๋“  ๋‚ด์šฉ์€ ํœ˜๋ฐœ์„ฑ์ด๋ฉฐ pod๊ฐ€ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์žฌ๋ฐฐ์น˜๋˜๋ฉด ๋ฐ์ดํ„ฐ๋„ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์˜ ์œ ์ง€๋ฅผ ์œ„ํ•˜์—ฌ volume์„ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค.

ย 

3.1 emptyDir

  • emptyDir ๋ณผ๋ฅจ์€ ํŒŒ๋“œ๊ฐ€ ๋…ธ๋“œ์— ํ• ๋‹น๋  ๋•Œ ์ฒ˜์Œ ์ƒ์„ฑ๋˜๋ฉฐ, ํ•ด๋‹น ๋…ธ๋“œ์—์„œ ํŒŒ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ์—๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด emptyDir ๋ณผ๋ฅจ์€ ์ฒ˜์Œ์—๋Š” ๋น„์–ด์žˆ์Šต๋‹ˆ๋‹ค.

  • ํŒŒ๋“œ ๋‚ด ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋Š” emptyDir ๋ณผ๋ฅจ์—์„œ ๋™์ผํ•œ ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•ด๋‹น ๋ณผ๋ฅจ์€ ๊ฐ๊ฐ์˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฒฝ๋กœ์— ๋งˆ์šดํŠธ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋…ธ๋“œ์—์„œ ํŒŒ๋“œ๊ฐ€ ์ œ๊ฑฐ๋˜๋ฉด emptyDir ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

  • emptyDir์€ ์ฃผ๋กœ Pod๋‚ด๋ถ€์—์„œ ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ํœ˜๋ฐœ์„ฑ ํŒŒ์ผ์„ ๊ณต์œ ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ ๋ฉ๋‹ˆ๋‹ค.

  • ๊ณต์œ ๊ฐ€ ํ•„์š” ์—†๋Š” ๋ณผ๋ฅจ์ด๋ผ๋ฉด ๊ตณ์ด emptyDir๋ฅผ ์‚ฌ์šฉ ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค ๋ช…์‹œํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ๋ณผ๋ฅจ์˜ ๋ฐ์ดํ„ฐ๋Š” ํœ˜๋ฐœ์„ฑ์ž…๋‹ˆ๋‹ค (์ด๋ฏธ์ง€์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” mountpath์ƒ์„ฑ์„ ์œ„ํ•œ ์šฉ๋„๋กœ๋Š” ์‚ฌ์šฉํ•  ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)

์ฐธ๊ณ : ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํฌ๋ž˜์‹œ๋˜๋Š” ๊ฒƒ์€ ๋…ธ๋“œ์—์„œ ํŒŒ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. emptyDir ๋ณผ๋ฅจ์˜ ๋ฐ์ดํ„ฐ๋Š” ์ปจํ…Œ์ด๋„ˆ ํฌ๋ž˜์‹œ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

ย 

ย 

(1) emptyDir๋ฅผ ๊ฐ€์ง€๋Š” ํŒŒ๋“œ์˜ yaml ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • nginx pod๋‚ด empytidir ์„ /cache๋ณผ๋ฅจ์œผ๋กœ ๋งˆ์šดํŠธ ํ•˜๋Š” yaml์ž…๋‹ˆ๋‹ค

8/06-volume-emptydir.yaml

ย 

  • ํ•ด๋‹น yaml ํŒŒ์ผ์„ ์ ์šฉํ•˜์—ฌ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋งˆ์šดํŠธ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ย 

ย 

(2) ๋ฉ€ํ‹ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ€์ง€๋Š” ํŒŒ๋“œ์—์„œ์˜ emptyDir ๋ณผ๋ฅจ ํŒŒ์ผ๊ณต์œ ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

8/07-volume-emptydir-multicon.yaml

ย 

  • ์ƒ์„ฑ ๋œ yaml์„ ์ ์šฉํ•˜์—ฌ pod๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ย 

3.2 hostpath

  • hostPath ๋ณผ๋ฅจ์€ ํ˜ธ์ŠคํŠธ ๋…ธ๋“œ์˜ ํŒŒ์ผ์‹œ์Šคํ…œ์— ์žˆ๋Š” ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํŒŒ๋“œ์— ๋งˆ์šดํŠธ ํ•ฉ๋‹ˆ๋‹ค.

  • emptydir๊ณผ ๋‹ฌ๋ฆฌ pod๋ฅผ ์‚ญ์ œํ•˜์—ฌ๋„ ์›Œ์ปค๋…ธ๋“œ์˜ ํŒŒ์ผ์€ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ๊ฐ ์›Œ์ปค๋…ธ๋“œ์˜ ํŒŒ์ผ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์— ์ฃผ์˜ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

    • node seletor๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋ณผ๋ฅจ์ด ์žˆ๋Š” node๋งŒ ์Šค์ผ€์ค„๋˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๋ชจ๋“  node๊ฐ€ ๋™์ผํ•œ ํŒŒ์ผ์„ ๊ฐ€์ง€๊ฑฐ๋‚˜ ๋“ฑ์˜ ์กฐ์น˜๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ๋ฐฐํฌ ์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

hostpath๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‚˜ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

ย 

(1) hostpath volume์„ ์œ„ํ•œ ๊ฒฝ๋กœ์— ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ย 

(2) ํ•ด๋‹น hostpath๋ฅผ ์‚ฌ์šฉํ•˜๋Š” yaml์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

8/08-volume-hostpath.yaml

ย 

(3) ํ•ด๋‹น pod๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ํ™•์ธ ํ•ฉ๋‹ˆ๋‹ค.

ย 

3.3 NFS

  • NFS๋ฅผ volume์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • NFS๋ฅผ ์ด์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ pod์— ๋™์ผํ•œ volume์„ ๋งˆ์šดํŠธ ํ•  ์ˆ˜ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŒŒ์ผ ๊ณต์œ ์— ๋งŽ์€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ย 

(1) ์‹ค์Šต์„ ์œ„ํ•˜์—ฌ w2-k8s๋ฒˆ ๋…ธ๋“œ์— nfs์„œ๋ฒ„๋ฅผ ์ž„์‹œ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์ง„ํ–‰ ํ•ฉ๋‹ˆ๋‹ค

ย 

(2) ์„ค์ •์ด ์™„๋ฃŒ๋œ NFS ๋ณผ๋ฅจ์„ ์ด์šฉํ•˜์—ฌ ๋งˆ์šดํŠธํ•˜๋Š” ํŒŒ๋“œ yaml ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

8/09-volume-nfs.yaml

ย 

(3) ์ƒ์„ฑ๋œ yaml์„ ์ ์šฉํ•˜์—ฌ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑ ํ•ฉ๋‹ˆ๋‹ค

ย 

3.4 Persistent Volume(PV)

  • PV(PersistentVolume): PV๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ํ”„๋กœ๋น„์ €๋‹ํ–ˆ๊ฑฐ๋‚˜ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋™์ ์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ํ•œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์Šคํ† ๋ฆฌ์ง€์ž…๋‹ˆ๋‹ค. PV๋Š” ๋ณผ๋ฅจ๊ณผ ๊ฐ™์€ ๋ณผ๋ฅจ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด์ง€๋งŒ PV๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ณ„ Pod์™€ ๋…๋ฆฝ์ ์ธ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  • PVC(PersistentVolumeClaim): PVC๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด PV์— ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์š”์ฒญ์ž…๋‹ˆ๋‹ค. Pod์™€ ์œ ์‚ฌํ•˜๊ฒŒ Pod๋Š” ๋…ธ๋“œ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•˜๊ณ , PVC๋Š” PV ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€์˜ ๋ณผ๋ฅจ์€ empty dir๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์‚ฌ์šฉ์ž(๊ฐœ๋ฐœ์ž)๊ฐ€ ๋ณผ๋ฅจ์˜ ์ •๋ณด๋ฅผ ์•Œ์•„์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค

๋ณผ๋ฅจ์˜ ์ •๋ณด๋ฅผ ๋ชฐ๋ผ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณผ๋ฅจ์„ PV๋กœ ์ƒ์„ฑ ํ•ด ๋‘๋ฉด ๊ฐœ๋ฐœ์ž๋Š” pvc๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ•ด๋‹น ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค

persistent volume(์ดํ•˜ PV) ๋ฅผ persistent volume claim(์ดํ•˜PVC) ๋กœ ์š”์ฒญํ•˜์—ฌ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ ์ž…๋‹ˆ๋‹ค

๋Œ€๋ถ€๋ถ„์˜ productionํ™˜๊ฒฝ์€ PV๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. NAS๋„ PV๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•ž์„œ ์‹ค์Šตํ•œ ํ˜•ํƒœ์˜ ๊ตฌ์„ฑ์œผ๋กœ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ย 

(1) PV Lifecycle

Provisioning

PV๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‹จ๊ณ„๋กœ ํ”„๋กœ๋น„์ €๋‹ ๋ฐฉ๋ฒ•์—๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ •์  ํ”„๋กœ๋น„์ €๋‹

    • ์ •์  ํ”„๋กœ๋น„์ €๋‹์€ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฏธ๋ฆฌ ์ ์ • ์šฉ๋Ÿ‰์˜ PV๋ฅผ ๋งŒ๋“ค์–ด ๋‘๊ณ  ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์žˆ์„ ์‹œ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘” PV๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

    • ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ† ๋ฆฌ์ง€ ์šฉ๋Ÿ‰์— ์ œํ•œ์ด ์žˆ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋™์  ํ”„๋กœ๋น„์ €๋‹

    • ๋™์  ํ”„๋กœ๋น„์ €๋‹์€ ์‚ฌ์šฉ์ž๊ฐ€ PVC๋ฅผ ๊ฑฐ์ณ์„œ PV๋ฅผ ์š”์ฒญํ–ˆ์„ ๋•Œ ์ƒ์„ฑํ•ด ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    • ํด๋Ÿฌ์Šคํ„ฐ์— ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ์˜ ์Šคํ† ๋ฆฌ์ง€ ์šฉ๋Ÿ‰์ด ์žˆ๋‹ค๋ฉด, ์›ํ•˜๋Š” ์šฉ๋Ÿ‰๋งŒํผ์„ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Binding

๋ฐ”์ธ๋”ฉ์€ ํ”„๋กœ๋น„์ €๋‹์œผ๋กœ ์ƒ์„ฑ๋œ PV๋ฅผ PVC์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. PVC์—์„œ ์›ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์šฉ๋Ÿ‰๊ณผ ์ ‘๊ทผ๋ฐฉ๋ฒ•์„ ๋ช…์‹œํ•ด์„œ ์šฉ์ฒญํ•˜๋ฉด ๊ฑฐ๊ธฐ์— ๋งž๋Š” PV๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. PV์™€ PVC์˜ ๋งคํ•‘์€ 1๋Œ€1 ๊ด€๊ณ„์ž…๋‹ˆ๋‹ค.

Using

PVC๋Š” Pod์— ์„ค์ •๋˜๊ณ , Pod๋Š” PVC๋ฅผ ๋ณผ๋ฅจ์œผ๋กœ ์ธ์‹ํ•ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๋Š” PVC๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ฐ”์ธ๋”ฉ๋œ PV๋ฅผ ์ฐพ๊ณ  ํ•ด๋‹น ๋ณผ๋ฅจ์„ Pod์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค. ํ• ๋‹น๋œ PVC๋Š” ํŒŒ๋“œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋™์•ˆ ๊ณ„์† ์‚ฌ์šฉ๋˜๋ฉฐ, ์‹œ์Šคํ…œ์—์„œ ์ž„์˜๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Reclaiming

์‚ฌ์šฉ์ด ๋๋‚œ PVC๋Š” ์‚ญ์ œ๋˜๊ณ , PV๋ฅผ ์ดˆ๊ธฐํ™”(reclaim)ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. PV๋Š” ๊ธฐ์กด์— ์‚ฌ์šฉํ–ˆ๋˜ PVC๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ๋‹ค๋ฅธ PVC๋กœ ์žฌํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ย 

(2) PV๋Š” Policy

  • Access Policyย 

    • RWO-ReadWriteOnce : ๋‹จ์ผ ๋…ธ๋“œ๋งŒ ์ฝ๊ธฐ/์“ฐ๊ธฐ๋ฅผ ์œ„ํ•ด ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ธ”๋ก ๋””๋ฐ”์ด์Šค๋Š” ์ด ๋ชจ๋“œ๋งŒ ์ง€์›)

    • ROX-ReadOnlyMany : ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ์ฝ๊ธฐ ์œ„ํ•ด ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค.(์ž˜ ์‚ฌ์šฉ์•ˆํ•จ)

    • RWX-ReadWriteMany: ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ์ฝ๊ธฐ ์“ฐ๊ธฐ๋ฅผ ์œ„ํ•ด ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค.(์ง€์›ํ•˜๋Š” ๊ณต์œ ํŒŒ์ผ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ)

      • Pod์˜ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณผ๋ฅจ์„ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” worker ๋…ธ๋“œ์˜ ์ˆ˜์— ํ•ด๋‹น ํ•œ๋‹ค. ๋˜ํ•œ nfs, ceph๋“ฑ ํ˜•ํƒœ์— ๋”ฐ๋ผ์„œ ์ง€์› ํ•˜์ง€ ์•Š๋Š” AccessPolicy๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด nfs๋Š” rwx๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ rbd๋“ฑ block device๋Š” rwo๋งŒ ์ง€์› ํ•ฉ๋‹ˆ๋‹ค.

  • Reclaim Policy

    • ์˜๊ตฌ ๋ณผ๋ฅจ์ด ์‚ญ์ œ ์š”์ฒญํ•  ๋•Œ ์•„๋ž˜ 3๊ฐ€์ง€ ํšŒ์ˆ˜ ์ •์ฑ…์ด ์žˆ๋‹ค. retain๊ณผ delete๋Š” ๋‹ค์‹œ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, recycle์€ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‚˜ ์ด์ œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค

delete

AWS EBS, GCE PD, ์• ์ € ๋””์Šคํฌ ๋˜๋Š” ์˜คํ”ˆ์Šคํƒ ๋“ฑ ์Šคํ† ๋ฆฌ์ง€ ์ž์ฒด์—์„œ ์‚ญ์ œย 

์ธ์Šคํ„ด์Šค ์‚ญ์ œ ์‹œ ๋ณผ๋ฅจ๋„ ๊ฐ™์ด ์‚ญ์ œ(ํ…Œ์ŠคํŠธ ์‹œ ๋ณดํ†ต ๋งŽ์ด ์‚ฌ์šฉํ•จ)

recycle

๋‚ด์šฉ๋งŒ ์‚ญ์ œ(rm -rf /volume/*)

recycle์€ ์‚ฌ์šฉ ์•ˆ๋˜๋ฉฐ,ย dynamic provisioning์„ ๋Œ€์ฒด ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ๊ณ  ํ•˜๊ณ  ์žˆ์Œ

retain

์ˆ˜๋™์œผ๋กœ ํšŒ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๋ณผ๋ฅจ

๋ณดํ†ต retain์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•จ.

Retain ๋ฐ˜ํ™˜ ์ •์ฑ…์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ ํด๋ ˆ์ž„์ด ์‚ญ์ œ๋˜๋ฉด ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์€ ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๋ฉฐ ๋ณผ๋ฅจ์€ "๋ฆด๋ฆฌ์Šค ๋œ" ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ „ ์š”์ฒญ์ž์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ์ „ํžˆ ๋ณผ๋ฅจ์— ๋‚จ์•„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์š”์ฒญ์— ๋Œ€ํ•ด์„œ๋Š” ์•„์ง ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๊ด€๋ฆฌ์ž๋Š” ๋‹ค์Œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ๋ณผ๋ฅจ์„ ์ˆ˜๋™์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์„ ์‚ญ์ œํ•œ๋‹ค. PV๊ฐ€ ์‚ญ์ œ๋œ ํ›„์—๋„ ์™ธ๋ถ€ ์ธํ”„๋ผ(์˜ˆ: AWS EBS, GCE PD, Azure Disk ๋˜๋Š” Cinder ๋ณผ๋ฅจ)์˜ ๊ด€๋ จ ์Šคํ† ๋ฆฌ์ง€ ์ž์‚ฐ์ด ์กด์žฌํ•œ๋‹ค.

  2. ๊ด€๋ จ ์Šคํ† ๋ฆฌ์ง€ ์ž์‚ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•œ๋‹ค.

  3. ์—ฐ๊ฒฐ๋œ ์Šคํ† ๋ฆฌ์ง€ ์ž์‚ฐ์„ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋™์ผํ•œ ์Šคํ† ๋ฆฌ์ง€ ์ž์‚ฐ์„ ์žฌ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์Šคํ† ๋ฆฌ์ง€ ์ž์‚ฐ ์ •์˜๋กœ ์ƒˆ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•œ๋‹ค

ย 

์‹ค์Šต์€ dynamic ํ”„๋กœ๋น„์ €๋‹์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง„ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„ท์•ฑ์ด๋‚˜ ์œ ๋ช…ํ•œ ์Šคํ† ๋ฆฌ์ง€ ํšŒ์‚ฌ๋Š” CSI๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. AWS๋Š” ๊ทธ ๊ธฐ๋Šฅ์ด ๋ช‡ ๊ฐœ ๋น ์ง„ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

ย 

(3) ๋งˆ์ง€๋ง‰ ์‹ค์Šตํ•œ nfs๋ฅผ ๋‹จ์ˆœ pv๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

8/10-volume-pv.yaml

ย 

  • yaml์„ ์ด์šฉํ•˜์—ฌ pv๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ย 

  • PV๊ฐ€ ์„ค์ •ํ•œ๋Œ€๋กœ ์ƒ์„ฑ๋˜๋ฉด, ํ•ด๋‹น PV๋ฅผ ์‚ฌ์šฉํ•˜๋Š” PVC๋ฅผ ์ƒ์„ฑํ•˜๋Š” yaml ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

8/11-volume-pvc.yaml

ย 

  • yaml ํŒŒ์ผ์„ ์ ์šฉํ•˜์—ฌ PVC๋ฅผ ์ƒ์„ฑ ํ•ฉ๋‹ˆ๋‹ค.

ย 

  • ํ•ด๋‹น PVC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” yaml ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

8/12-volume-pvc-pod.yaml

ย 

  • yaml ํŒŒ์ผ์„ ์ ์šฉํ•˜์—ฌ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ย 

3.5 ๋™์  ํ”„๋กœ๋น„์ €๋‹ + ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ํ…Œ์ŠคํŠธ

  • 3.4 ํ•ญ๋ชฉ์—์„œ PV๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น PV๋ฅผ ์‚ฌ์šฉํ•  PVC๋ฅผ ์„ ์–ธํ•˜๊ณ  ํ•ด๋‹น PVC๋ฅผ pod์— ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋™์  ํ”„๋กœ๋น„์ €๋‹์€ PVC๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ํ•ด๋‹น PVC์— ์•Œ๋งž๋„๋ก PV๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

    • ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํ† ๋ฆฌ์ง€๋‚˜ ๋ณผ๋ฅจ์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชฐ๋ผ๋„ ์šด์˜์ž๊ฐ€ ๋ณผ๋ฅจ์„ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋ฉด(PVC) ํ•ด๋‹น ์š”์ฒญ์— ๋งž๋Š” PV๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋ฐฉ์‹ ์ž…๋‹ˆ๋‹ค.

  • ์‹ค์ œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์  ํ”„๋กœ๋น„์ €๋‹์„ ์ง€์›ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

  • ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„์œ„ํ•ด CSI(Container Storage Interface)๋ฅผ ์ง€์›ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • CSI๋ฅผ ์ง€์›ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€๋Š” ๊ฐ ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž์˜ ์Šคํ† ๋ฆฌ์ง€, Netapp๋“ฑ์˜ ์Šคํ† ๋ฆฌ์ง€, ceph ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ย 

ย 

(1) ๋™์  ํ”„๋กœ๋น„์ €๋‹์œผ๋กœ nfs๋ฅผ ๊ฐ€์ง€๊ณ  ์‹ค์Šตํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด์˜ ์„ธํŒ…๊ฐ’์„ ์ง€์›๋‹ˆ๋‹ค.

ย 

  • NFS ํ”„๋กœ๋น„์ €๋„ˆ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

ย 

  • pvc๋งŒ ์ง€์ •ํ•˜์—ฌ ๊ตฌ์„ฑํ•˜๋ฉด, ์ž๋™์ ์œผ๋กœ ํ•˜๋“œ์›จ์–ด์— ์šฉ๋Ÿ‰์ด ํ• ๋‹น๋˜๋Š” ํ˜•ํƒœ์˜ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

  • deployment.yaml ํŒŒ์ผ ์ˆ˜์ •

ย 

  • pvc๋งŒ ์ง€์ •ํ•˜์—ฌ ๊ตฌ์„ฑํ•˜๋ฉด, ์ž๋™์ ์œผ๋กœ ํ•˜๋“œ์›จ์–ด์— ์šฉ๋Ÿ‰์ด ํ• ๋‹น๋˜๋Š” ํ˜•ํƒœ์˜ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

8/13-volume-dynamic-pvc.yaml

ย 

  • pvc์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” pv๊ฐ€ ๋™์ ์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ ๋œ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ย 

ย 

  • ์ •์ƒ์ ์œผ๋กœ volume์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

8/14-volume-nfs-pvc.yaml

ย 

  • PV, PVC ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ํ•ด๋‹น pvc๋ฅผ ์ด์šฉํ•˜์—ฌ pod๋ฅผ ๊ตฌ๋™ํ•ด ์ •์ƒ์ ์œผ๋กœ volume์ด attach ๋˜๋Š”์ง€ ํ™•์ธ ํ•ฉ๋‹ˆ๋‹ค.

8/15-volume-nfs-pod.yaml

ย 

  • RECLAIM POLICY๊ฐ€ delete์ด๋ฏ€๋กœ pvc๋ฅผ ์‚ญ์ œํ•˜์—ฌ pv์™€ ์‹ค์ œ ๋ณผ๋ฅจ์ด ์‚ญ์ œ๋˜๋Š”์ง€ ํ™•์ธ ํ•ฉ๋‹ˆ๋‹ค.

Related content