
이 게시물에서는 많은 볼륨 종류 중 빈 디렉토리에 대해 알아보려고 한다.
즉, "파드가 살아있는 동안만 유지되는 임시 저장소"라고 생각하면 된다.
쿠버네티스 공식 홈페이지에는 빈 디렉토리의 용도가 다음과 같이 나와있다.
말이 굉장히 어렵게 들리지만, 풀어쓰자면,
>"디스크 기반의 병합 정렬을 위한 스크래치 공간"
-> 단순히 임시 작업 공간이라는 뜻. 대용량 처리 시 정렬하고자 할 때 잠시 저장해두는 용도.
"충돌로부터 복구하기 위해 긴 계산을 검사점으로 지정"
-> 프로그램이 중간 저장을 할 수 있도록 도와주는 것(=checkpoint)
“웹 서버 컨테이너가 데이터를 처리하는 동안 콘텐츠 매니저 컨테이너가 가져오는 파일을 보관”
-> 컨테이너간 데이터 공유를 의미, 한 컨테이너가 파일을 생성하면 다른 컨테이너가 그 파일을 읽을 수 있게 같은 emptyDir 볼륨을 공유하는 구조이다.
apiVersion: v1
kind: Pod
metadata:
name: pod-tempstorage
labels:
app: webdemo
spec:
containers:
- name: web-server
image: nginx:latest
volumeMounts:
- name: shared-temp
mountPath: /usr/share/nginx/html
- name: page-writer
image: busybox
command: ["/bin/sh", "-c"]
args:
- echo "Welcome! Page generated at $(date)" > /data/index.html;
sleep 3600;
volumeMounts:
- name: shared-temp
mountPath: /data
volumes:
- name: shared-temp
emptyDir: {}
<사전 작업>
1. vim pod-tempstorage.yaml하여 위 코드를 복사한 뒤 !wq 하여 편집을 마친다.
2. kubectl apply -f pod-tempstorage.yaml 하여 파드를 배포한 후
3. kubectl get pods -o wide 하여 파드 상태를 확인한다. (running이면 완료)

(2개를 띄웠으니 2개가 running된 것을 확인할 수 있다.)
앞서 만든 파드 pod-tempstorage에는
web-server, page-writer 두 개의 컨테이너가 있다.
이 둘은 같은 emptyDir 볼륨(shared-temp)을 공유한다.
즉, 한쪽이 파일을 만들면 다른 쪽에서도 바로 볼 수 있어야 한다.
kubectl exec -it pod-tempstorage -c web-server -- /bin/bash
이 명령어는 kubectl을 통해 pod-tempstorage 파드의 web-server 컨테이너(nginx 이미지)에 접속하는 명령이다.
ls /usr/share/nginx/html
그런 다음 이렇게 명령을 실행하면 다음과 같이 출력 예시가 나온다.

그럼 이 파일을 cat 명령어를 통해 확인하면 다음과 같이 나온다.

kubectl exec -it pod-tempstorage -c page-writer -- /bin/sh
이 명령어를 통해 nginx쪽 컨테이너에 들어간다.
들어가서
pwd
ls
이 명령어를 실행해보면

다음과 같이 index.html이 있는 것을 확인할 수 있다.
이 index.html을 cat 명령어를 통해 해당 내용을 확인해보면
내용이 똑같은 것을 알 수 있다.
web-server 컨테이너에서
/usr/share/nginx/html# echo "Hello from container!" > index.html
cat index.html
해당 명령어를 통해 해당 index.html 내용을 수정하고 아까 만든 컨테이너에 접속해서 똑같은지 확인해본다.

이렇게 똑같은 디렉토리를 공유하는 것을 확인할 수 있다.

그러면 바꾼 내용으로 index.html 내용이 나오는 것을 확인할 수 있으며, 두 컨테이너는 같은 디렉토리를 공유하고 있다는 것을 확인할 수 있다.
구분 컨테이너 이름 마운트 경로 파일 내용 1 web-server /usr/share/nginx/htmlHello from container!2 page-writer /dataHello from container!
위와 같이 두 컨테이너가 마운트 경로는 다르지만, 같은 빈 디렉토리를 공유하고 있다.
참고자료:
[쿠버네티스 공식 홈페이지 - Volumes]
https://kubernetes.io/docs/concepts/storage/volumes/