I have a PersistenceVolumeClaim defined by
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
storageClassName: "standard"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
And the containers section of the deployment yaml looks like this
spec:
containers:
- name: my-container
image: abc/xyz:1.2.3
volumeMounts:
- mountPath: /var/store
name: mystore
volumes:
- name: mystore
persistentVolumeClaim:
claimName: my-pvc
I have a few questions about this set up.
- Do each replica of my pod get 1GB storage space (Assuming the PersistentVolume has enough space)?
- How would this behave if the pod replicas are on different kubernetes nodes?
Edit
I would like all replicas of my pod to have it's own storage (not a shared one). Is there a way to achieve this without creating a RWM volume?
CodePudding user response:
Do each replica of my pod get 1GB storage space (Assuming the PersistentVolume has enough space)?
No. Since you use one PersistentVolumeClaim, you will get one PersistentVolume.
How would this behave if the pod replicas are on different kubernetes nodes?
It will not work, unless you use a volume type that can be used from multiple nodes at once, with access mode ReadWriteMany or ReadOnlyMany. But you have declared ReadWriteOnce in your PersistentVolumeClaim, so it will likely not work.
I would like all replicas of my pod to have it's own storage (not a shared one). Is there a way to achieve this without creating a RWM volume?
Yes, you can use StatefulSet instead of Deployment, and use the volumeClaimTemplates:-field.
