apiVersion: v1
kind: Pod
metadata:
name: empty-dir-pod
spec:
containers:
- name: alpine
image: alpine
args:
- sleep
- "120"
volumeMounts:
- name: pod-storage
mountPath: /data/
volumes:
- name: pod-storage
emptyDir: {}
Save the above YAML in empty-dir-pod.yaml and run kubectl apply -f empty-dir.pod.yaml to create the Pod.
Next, we are going to use the kubectl exec command to get a terminal inside the container:
$ kubectl exec -it empty-dir-pod -- /bin/sh
/ # ls
bin dev home media opt root sbin sys usr
data etc lib mnt proc run srv tmp var
If you run ls inside the container, you will notice the data folder. The data folder is mounted from the pod-storage Volume defined in the YAML.
Let's create a dummy file inside the data folder and wait for the container to restart (after 2 minutes) to prove that the data inside the data folder stays around.
From inside the container create a hello.txt file under the data folder:
echo "hello" >> data/hello.txt
You can type exit to exit the container. If you wait for 2 minutes, the container will automatically restart. To watch the container restart, run the kubectl get po -w command from a separate terminal window.
Once container restarts, you can check that the file data/hello.txt is still in the container:
$ kubectl exec -it empty-dir-pod -- /bin/sh
/ # ls data/hello.txt
data/hello.txt
/ # cat data/hello.txt
hello
/ #