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 |
---|---|
| Across all pods in a non-terminal state, the sum of CPU limits cannot exceed this value. |
| Across all pods in a non-terminal state, the sum of memory limits cannot exceed this value. |
| Across all pods in a non-terminal state, the sum of CPU requests cannot exceed this value. |
| Across all pods in a non-terminal state, the sum of memory requests cannot exceed this value. |
| Across all pods in a non-terminal state, the number of huge page requests of the specified size cannot exceed this value. |
| Same as |
| Same as |
ย
์ฟผํฐ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ์ฌ ํน์ ์ฐ์ ์์์ ํ๋์ ์ผ์น ์ํค๋ฉฐ, "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๋ฅผ ์์ฑํ๋ ๋จ๊ณ๋ก ํ๋ก๋น์ ๋ ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
| |
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
๋ฐํ ์ ์ฑ
์ ๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ๋ฐํํ ์ ์๊ฒ ํ๋ค. ํผ์์คํดํธ ๋ณผ๋ฅจ ํด๋ ์์ด ์ญ์ ๋๋ฉด ํผ์์คํดํธ๋ณผ๋ฅจ์ ์ฌ์ ํ ์กด์ฌํ๋ฉฐ ๋ณผ๋ฅจ์ "๋ฆด๋ฆฌ์ค ๋" ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ์์ฒญ์์ ๋ฐ์ดํฐ๊ฐ ์ฌ์ ํ ๋ณผ๋ฅจ์ ๋จ์ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์์ฒญ์ ๋ํด์๋ ์์ง ์ฌ์ฉํ ์ ์๋ค. ๊ด๋ฆฌ์๋ ๋ค์ ๋จ๊ณ์ ๋ฐ๋ผ ๋ณผ๋ฅจ์ ์๋์ผ๋ก ๋ฐํํ ์ ์๋ค.
ํผ์์คํดํธ๋ณผ๋ฅจ์ ์ญ์ ํ๋ค. PV๊ฐ ์ญ์ ๋ ํ์๋ ์ธ๋ถ ์ธํ๋ผ(์: AWS EBS, GCE PD, Azure Disk ๋๋ Cinder ๋ณผ๋ฅจ)์ ๊ด๋ จ ์คํ ๋ฆฌ์ง ์์ฐ์ด ์กด์ฌํ๋ค.
๊ด๋ จ ์คํ ๋ฆฌ์ง ์์ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ญ์ ํ๋ค.
์ฐ๊ฒฐ๋ ์คํ ๋ฆฌ์ง ์์ฐ์ ์๋์ผ๋ก ์ญ์ ํ๊ฑฐ๋ ๋์ผํ ์คํ ๋ฆฌ์ง ์์ฐ์ ์ฌ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์คํ ๋ฆฌ์ง ์์ฐ ์ ์๋ก ์ ํผ์์คํดํธ๋ณผ๋ฅจ์ ์์ฑํ๋ค
ย
์ค์ต์ 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์ ์ค์ ๋ณผ๋ฅจ์ด ์ญ์ ๋๋์ง ํ์ธ ํฉ๋๋ค.