Is it possible for running pods on kubernetes to share the same PVC

2/19/2019

I've currently set up a PVC with the name minio-pvc and created a deployment based on the stable/minio chart with the values

mode: standalone
replicas: 1
persistence:
  enabled: true
  existingClaim: minio-pvc

What happens if I increase the number of replicas? Do i run the risk of corrupting data if more than one pod tries to write to the PVC at the same time?

-- vhflat
kubernetes
minio

2 Answers

2/19/2019

In case you are sticking to Deployments instead of StatefulSets it won't be feasible for multiple replicas to write to the same PVC, since there is no guarantee that the different replicas are scheduled on the same node, and so you might have a pending pod waiting to establish a connection to the volume and fail. The solution is to choose a specific node and have all your replicas run on the same node.

Run the following and assign a label to one of your nodes:

kubectl label nodes <node-name> <label-key>=<label-value>

Say we choose label-key to be labelKey and label-value to be node1. Then you can go ahead and add the following to your YAML file and have the pods scheduled on the same node:

apiVersion: apps/v1 kind: Deployment metadata: name: my-app labels: app: my-app spec: replicas: 3 template: spec: nodeSelector: labelKey: node1 containers: ...

-- cookiedough
Source: StackOverflow

2/19/2019

Don't use deployment for stateful containers. Instead use StatefulSets. StatefulSets are specifically designed for running stateful containers like databases. They are used to persist the state of the container.

Note that each pod is going to bind a separate persistent volume via pvc. There is no possibility of multiple instances of pods writing to same pv. Hope I answered your question.

-- P Ekambaram
Source: StackOverflow