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
/ #