Can we use single Volume mount in Pod for more than a single container?

12/21/2018

In a pod can we have a single volume for two different containers.

-- Kishan Jr
kubernetes
kubernetes-container
kubernetes-pod

2 Answers

12/21/2018

Yes. It's common to share a volume between two containers mainly to communicate. Check out the below diagram.

enter image description here

Try this article1 article2

-- SAUJ
Source: StackOverflow

12/23/2018

If you have two containers and you want to share data between them, you can do like below:

apiVersion: v1
kind: Pod
metadata:
  name: production
spec:
  containers:
  - name: container1
    image: image1
    volumeMounts:
    - name: storage
      mountPath: /vol/data
  - name: container2
    image: image2
    volumeMounts:
    - name: storage
      mountPath: /store/data
  volumes:
  - name: storage
    emptyDir: {}

Here,

an emptyDir is used to share data in between two containers. Both containers has have volume.

So, if you want to share same data, you can mount same volume in two containers.

But, if you want to use single volume, and do not want to share data between two containers, you can use subPath

spec:
  containers:
  - name: container1
    image: image1
    volumeMounts:
    - name: storage
      mountPath: /vol/data
      subPath: vol
  - name: container2
    image: image2
    volumeMounts:
    - name: storage
      mountPath: /store/data
      subPath: store
  volumes:
  - name: storage
    emptyDir: {}

Here,

subPath specify a sub-path inside the referenced volume instead of its root. That means, two separate directory from your volume will be mounted in two containers.

In this example, /vol directory will be mounted in container1 container and /store from volume will be mounted in container2

Now, you data will not be conflicted and shared

-- Mir Shahriar Sabuj
Source: StackOverflow