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: namefield specifies a Deployment namedvolumes-example-deployment.
- The Pod template specification includes a volumesfield that describes an emptyDir volume namedcache-volume.
- The container specification includes a volumeMounts:field that specifies that the Volume namedcache-volumeis 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.