Example:
Namespace: a
PVC: a-pvc
Pod: main-pod-to-work-withMounts:
a-pvc; name: a-pvc-mount; path: /pvc/a-files
b-pvc; name: b-pvc-mount; path: /pvc/b-files
c-pvc; name: c-pvc-mount; path: /pvc/c-filesNamespace: b
PVC: b-pvcNamespace: c
PVC: c-pvcAs per Persistent Volume docs:
A PersistentVolume (PV) is a piece of storage in the cluster that has been provisioned by an administrator or dynamically provisioned using Storage Classes.
A PersistentVolumeClaim (PVC) is a request for storage by a user.
Bit lower in documentation you have Binding part, where you can find information:
Once bound, PersistentVolumeClaim binds are exclusive, regardless of how they were bound. A PVC to PV binding is a one-to-one mapping, using a ClaimRef which is a bi-directional binding between the PersistentVolume and the PersistentVolumeClaim.
Pod and PVC are namespaced resources. It mean's that if you have pod in default namespace, pvc also must be in the same namespace.
$ kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
...
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
pods po v1 true Pod
...If you would create pod in default namespace, it won't be albe to see resources in other namespace. That's why you need to specify namespace in some commends. If you won't specify it, your output will be from default namespace.
$ kubectl get po
No resources found in default namespace.
$ kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
event-exporter-gke-564fb97f9-wtx9w 2/2 Running 0 9m2s
fluentbit-gke-8tcm6 2/2 Running 0 8m48s
fluentbit-gke-cdm2w 2/2 Running 0 8m51sBased on Configure a Pod to Use a PersistentVolume for Storage documentation you have steps to create PV, PVC and Pods.
$ kubectl get po
NAME READY STATUS RESTARTS AGE
task-pv-pod 1/1 Running 0 5m20s
task-pv-pod-2 1/1 Running 0 4m43s
task-pv-pod-3 1/1 Running 0 2m40sFew pods can use the same PVC. But all pods and PVC are in the same namespace. As pod and pvc resources, it's impossible to use pod from one namespace to use resource from another namespace.
Kubernetes namespaced resources are visible only for resources in the same namespace (like pod or pvc) In that situation you have specify namespace using --namespace <namespace> or -n <namespace>. There are also cluster-wide resources like PersistentVolume which don't require to specify name as they are visible in whole cluster. To get list of resources to check if it's namespaced you can use command $ kubectl api-resources.
In one particular namespace, one PVC can be used by a few pods. However it is impossible to one pod have few PVC from another namespaces.
If this didn't answer your question, please elaborate it.