Pod and Volume
์ปจํ ์ด๋ ๋ด์ ํ์ผ์ ๋ชจ๋ ์ผ์์ ์ธ ์กด์ฌ๋ค. ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๋ฉด, ์ปจํ ์ด๋์ ๊ธฐ๋ก๋ ๋ฐ์ดํฐ ๋ชจ๋ ์ฌ๋ผ์ง๋ค. ์ด๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด Docker์ K8s๋ Volume ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ด๊ธ์ Docker ์ปจํ ์ด๋์ Volume ๊ฐ๋ ์ ์ด๋ฏธ ์๋ ๊ฒ์ ์ ์ ๋ก ํ๋ค. K8s์ Volume์ Docker ์ปจํ ์ด๋ Volume๋ณด๋ค ๋ ๋ค์ํ๊ณ , ์ ์ฐํ๋ค.
Volume์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
spec.volumes[*]์ ๋ณผ๋ฅจ์ ์ ์ํ๋ค. ๊ทธ๋ฆฌ๊ณ spec.containers[*]์ ์ ์๋ ์ปจํ
์ด๋์ volumeMounts[*]๋ก ๋ณผ๋ฅจ์ ์ฐ๊ฒฐํด์ค๋ค.
apiVersion: v1
kind: Pod
spec:
volumes:
- name: name-of-volume
...
containers:
- image: ...
name: ...
volumeMounts:
- name: name-of-volume
mountPath: /container-dir
Volume ์ ํ๋ค
emptyDir ์ ํ
๋น์ด์๋(empty) ๋ณผ๋ฅจ์ ์ ๊ณตํ๋ ์ ํ์ด๋ค. Pod์ด ์ ๊ฑฐ๋๋ฉด, emptyDir ๋ณผ๋ฅจ์ ๋ด๊ฒจ์๋ ๋ฐ์ดํฐ๋ ์๊ตฌ์ ์ผ๋ก ์ญ์ ๋๋ค. ๋จ, ์ปจํ
์ด๋ ํฌ๋์ ๊ฐ์ด ์ปจํ
์ด๋ ์ค๋ฅ์ ๊ฒฝ์ฐ์๋ emptyDir์ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋์ง ์๋๋ค. Pod์ด ์์ ํ ๋ด๋ ค๊ฐ ๊ฒฝ์ฐ์๋ง ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ ๊ฒ์ด๋ค. ๋ณดํต ์บ์ฑ(caching) ๋ฑ์ ์์๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋๋ฐ ์ ํฉํ๋ค.
...
spec:
volumes:
- name: cache-volume
emptyDir: {}
containers:
...
hostPath ์ ํ
ํธ์คํธ ๋ ธ๋์ ๋์คํฌ์ ๋ณผ๋ฅจ์ ์์ฑํด Pod์ด ์ ๊ฑฐ๋๋๋ผ๋ ๋ณผ๋ฅจ์ ๋ฐ์ดํฐ๋ ์ ์งํ๋ ์ ํ์ด๋ค. ๋จ, ํธ์คํธ์ ๋์คํฌ๋ฅผ Pod ์ปจํ ์ด๋์ ๋ ธ์ถํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ ๋งํ๋ฉด ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ผ๋ฉฐ, ์ฌ์ฉ์ ๋งค์ฐ๋งค์ฐ ์ ์ํด์ผ ํ๋ค.
...
spec:
volumes:
- name: node-volume
hostPath:
# ํธ์คํธ์ ๋๋ ํ ๋ฆฌ ์์น
path: /data
type: Directory # ์ฃผ์ด์ง ๊ฒฝ๋ก์ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ด์ผ ํจ
type: DirectoryOrCreate # ๊ฒฝ๋ก์ ๋๋ ํฐ๋ฆฌ๊ฐ ์๋ค๋ฉด, kubelet์ ๊ถํ๊ณผ ๊ฐ์ ๊ถํ์ ๊ฐ์ง ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑ
type: ...
containers:
...
hostPath.type์ผ๋ก ํ์
์ ์ง์ ํ ์ ์์ผ๋ฉฐ, ์ด์ ๋ฐ๋ผ ๋ณผ๋ฅจ ์ ๊ทผ๊ณผ ์์ฑ์ ๋ํด ์ ์ดํ ์ ์๋ค. ๊ทธ์ธ ํ์
๋ค์ k8s ๋ฌธ์๋ฅผ ์ฐธ์กฐํ ๊ฒ.
ConfigMap & Secret ์ ํ
K8s์ ConfigMap ๋ฆฌ์์ค๋ฅผ ๋ณผ๋ฅจ์ผ๋ก ์ฌ์ฉํ ์๋ ์๋ค. ์ด ๊ฒฝ์ฐ, ConfigMap์ ์ ์๋ key๋ฅผ ํ์ผ ์ด๋ฆ์ผ๋ก ํ์ผ์ด ์์ฑ๋๊ณ , value๊ฐ ํ์ผ ์์ ์์ฑ๋๋ค.
...
spec:
volumes:
- name: config-volume
configMap:
name: my-config
containers:
...
๋ง์ฐฌ๊ฐ์ง๋ก Secret ๋ฆฌ์์ค๋ ์ปจํ ์ด๋ ๋ณผ๋ฅจ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
PersistentVolumeClaim ์ ํ
๋ค์์๋ ์ดํด๋ณผ K8s ๋ฆฌ์์ค๋ก Persistent Volume์ ์ฌ์ฉํ ์ ์๋๋ก ๋ฐ์ธ๋ฉ ํ๋ ๋ฆฌ์์ค์ด๋ค. ์ง๊ธ์ ์ด๋ป๊ฒ Pod์ Volume์ผ๋ก ์ธ ์ ์๋์ง๋ง ํ์ธํ์.
...
spec:
volumes:
- name: pv-storage
persistentVolumeClaim:
claimName: my-pvc
containers:
...