emptyDir Volume은 아무 데이터도 없는 빈 디렉토리를 제공해 주는 볼륨이다. Pod가 생성한 데이터를 저장할 수 있으며, 동일한 Pod내 Container 간에 데이터를 공유할 때 유용하게 사용할 수 있다.
또한, 빅 데이터와 같은 큰 데이터 셋트를 처리하기 위한 임시 저장소로도 사용 가능하다.
---
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-rs-fortune
spec:
replicas: 1
selector:
matchLabels:
app: myapp-rs-fortune
template:
metadata:
labels:
app: myapp-rs-fortune
spec:
containers:
- name: web-server
image: nginx:alpine
volumeMounts:
- name: web-fortune
mountPath: /usr/share/nginx/html
readOnly: true
ports:
- containerPort: 8
- name: html-generator
image: ghcr.io/c1t1d0s7/fortune
volumeMounts:
- name: web-fortune
mountPath: /var/htdocs
volumes:
- name: web-fortune
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: myapp-svc-fortune
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
app: myapp-rs-fortune
명언을 자동 생성해주는 html-generator container와 nginx를 사용한 web-fortune container를 생성해주었다.
둘은 같은 volume을 공유한다
아래 코드를 통해 같은 볼륨을 공유하는 것을 확인할 수 있다
vagrant@kube-control1:~/20240624-storage$ kubectl exec myapp-rs-fortune-xskl2 -c web-server -- cat /usr/share/nginx/html/index.html
If your life was a horse, you'd have to shoot it.
vagrant@kube-control1:~/20240624-storage$ kubectl exec myapp-rs-fortune-xskl2 -c html-generator -- cat var/htdocs/index.html
Q: What's tan and black and looks great on a lawyer?
A: A doberman.
gitRepo Volume은 EmptyDir volume에 지정한 Git Repository의 파일을 채워서 제공해주는 볼륨이다
volumes:
- name: VOLUME_NAME
gitRepo:
repository: GIT_REPO_URL
revision: BRANCH
directory: PATH
gitRepo Volume 유형은 더 이상 사용되지 않는다. Git 저장소에 있는 컨테이너를 프로비저닝 하려면, InitContainer에 EmptyDir Volume을 마운트하고, 여기에 git 명령을 사용해서 Git 저장소를 복제하고, Pod Container에서 empty Volume을 마운트한다.