Volumes
- node-local types such as
emptyDir
orhostPath
- file-sharing types such as
nfs
- cloud provider-specific types like
awsElasticBlockStore
,azureDisk
, orgcePersistentDisk
- distributed file system types, for example
glusterfs
orcephfs
- special-purpose types like
secret
,gitRepo
PersistentVolume
, which is covered in its own lesson.emptyDir
volume 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:
exit
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 exit
.
emptyDir
you currently can not specify resource consumption limits.
kubectl delete pod/sharevol
As already described, this will destroy the shared volume and all its contents.