- node-local types such as
- file-sharing types such as
- cloud provider-specific types like
- distributed file system types, for example
- special-purpose types like
PersistentVolume, which is covered in its own lesson.
emptyDirvolume to exchange data:
kubectl apply -f https://raw.githubusercontent.com/openshift-evangelists/kbe/main/specs/volumes/pod.yaml
kubectl describe pod sharevol
The output below is truncated to show the relevant volume information:
Name: sharevol Namespace: default Priority: 0 Node: minikube/192.168.39.51 ... Containers: c1: Container ID: docker://0cfe351e5a3131d3e02ca92a4aad8ea196cde403dcbc4713329bb418e1cce144 ... Mounts: /tmp/xchange from xchange (rw) /var/run/secrets/kubernetes.io/serviceaccount from default-token-sckql (ro) c2: Container ID: docker://93eadd487c18f5fc77885b8c343dff6891c2fdbae9752160a7d5a08c2763ba9c ... Mounts: /tmp/data from xchange (rw) /var/run/secrets/kubernetes.io/serviceaccount from default-token-sckql (ro) ... Volumes: xchange: Type: EmptyDir (a temporary directory that shares a pod's lifetime) Medium: SizeLimit: <unset> ...
We first connect to one of the containers in the pod,
c1, to view the volume mount and generate some data:
kubectl exec -it sharevol -c c1 -- bash
The volume is mounted like any other Linux volume mount:
mount | grep xchange
Create a file in the mount that we'll be able to access from the other container in the pod:
echo 'some data' > /tmp/xchange/data
When you're finished, disconnect from the container:
When we now connect to the container
c2, the second container running in the pod, we can see the volume mounted at
/tmp/data (as compared to
c1 where it is mounted to
/tmp/xchange) and are able to read the data created in the previous step:
kubectl exec -it sharevol -c c2 -- bash cat /tmp/data/data
Once again, exit from the connected container by running
emptyDiryou currently can not specify resource consumption limits.
kubectl delete pod/sharevol
As already described, this will destroy the shared volume and all its contents.