This page explains how to create Volume resources in your cluster. For more details, see the Kubernetes documentation about Volumes.
Using Volumes with Deployments
You can create a Deployment of Pods where each Pod contains one or more Volumes. The following Deployment manifest describes a Deployment of three Pods that each have an emptyDir Volume.
In this example:
- The
metadata: name
field specifies a Deployment namedvolumes-example-deployment
. - The Pod template specification includes a
volumes
field that describes an emptyDir volume namedcache-volume
. - The container specification includes a
volumeMounts:
field that specifies that the Volume namedcache-volume
is mounted at the file path/cache
. - The manifest file is named
volumes-demo.yaml
.
apiVersion: apps/v1
kind: Deployment
metadata:
name: volumes-example-deployment
spec:
replicas: 3
selector:
matchLabels:
app: demo
template:
metadata:
labels:
app: demo
spec:
containers:
- name: test-container
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
emptyDir: {}
To create a Deployment from this manifest file, run the following command:
kubectl apply -f volumes-demo.yaml
Verify that your Deployment is running correctly and has the expected Volume with this command:
kubectl describe pods volumes-example-deployment
This prints information about each of the three Pods in the Deployment. The
output shows that each Pod has a container, test-container, with the /cache
mount:
Mounts:
/cache from cache-volume (rw)
The output also shows that each Pod contains a Volume named cache-volume
:
Volumes:
cache-volume:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
For more information about creating Deployments, refer to Creating a Deployment.