根据Persistent Volume 文档:
PersistentVolume (PV) 是集群中的一块存储,由管理员配置或使用存储类动态配置。
PersistentVolumeClaim (PVC) 是用户的存储请求。
您拥有Binding 部分的文档较低,您可以在其中找到信息:
一旦绑定,PersistentVolumeClaim 绑定是独占的,无论它们是如何绑定的。 PVC 到 PV 的绑定是一对一的映射,使用 ClaimRef,它是 PersistentVolume 和 PersistentVolumeClaim 之间的双向绑定。
Pod 和 PVC 是 namespaced 资源。这意味着如果您在default namespace 中有pod,则pvc 也必须在同一个namespace 中。
$ kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
...
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
pods po v1 true Pod
...
如果您要在default namespace 中创建pod,则将无法在其他namespace 中看到资源。这就是为什么您需要在某些推荐中指定namespace。如果您不指定它,您的输出将来自default 命名空间。
$ 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 8m51s
测试
根据Configure a Pod to Use a PersistentVolume for Storage 文档,您有创建PV、PVC 和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 2m40s
很少有 pod 可以使用相同的 PVC。但是所有pods 和PVC 都在同一个namespace 中。作为pod 和pvc 资源,不可能使用来自一个命名空间的pod 来使用来自另一个namespace 的资源。
结论
Kubernetes namespaced 资源仅对同一 namespace 中的资源可见(如 pod 或 pvc)在这种情况下,您必须使用 --namespace <namespace> 或 -n <namespace> 指定 namespace。还有像PersistentVolume 这样的集群范围的资源,它们不需要指定名称,因为它们在整个集群中都是可见的。要获取资源列表以检查它是否已命名空间,您可以使用命令 $ kubectl api-resources。
在一个特定的namespace 中,一个PVC 可以被几个pod 使用。但是,一个pod 不可能从另一个namespaces 中获得很少的PVC。
如果这没有回答您的问题,请详细说明。