Google compute engine GKE ReadOnlyMany持久卷,在多个名称空间中具有ReadOnlyMany声明

Google compute engine GKE ReadOnlyMany持久卷,在多个名称空间中具有ReadOnlyMany声明,google-compute-engine,kubernetes,google-kubernetes-engine,Google Compute Engine,Kubernetes,Google Kubernetes Engine,我有一个带有一些蛋白质数据库镜像的磁盘映像(HHsearch、BLAST、PDB等),我使用一些CI工具构建了这些数据库,并将其写入GCE磁盘以运行。我想通过PersistentVolumeClaims在多个命名空间中访问由replicationcontroller创建的Pods中的ReadOnlyManyPV,但我没有得到预期的结果 PersistentVolume配置如下所示 apiVersion: v1 kind: PersistentVolume metadata: name: "d

我有一个带有一些蛋白质数据库镜像的磁盘映像(HHsearch、BLAST、PDB等),我使用一些CI工具构建了这些数据库,并将其写入GCE磁盘以运行。我想通过
PersistentVolumeClaims
在多个命名空间中访问由
replicationcontroller
创建的
Pods
中的
ReadOnlyMany
PV,但我没有得到预期的结果

PersistentVolume配置如下所示

apiVersion: v1
kind: PersistentVolume
metadata:
  name: "databases"
spec:
  capacity:
    storage: 500Gi
  accessModes:
    - ReadOnlyMany
  persistentVolumeReclaimPolicy: Retain
  gcePersistentDisk:
    pdName: "databases-us-central1-b-kube"
    fsType: "ext4"
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: databases
spec:
  accessModes:
    - ReadOnlyMany
  resources:
    requests:
      storage:
  volumeName: databases
装载到kubernetes时的外观

$ kubectl describe pv
Name:       databases
Labels:     <none>
Status:     Bound
Claim:      production/databases
Reclaim Policy: Retain
Access Modes:   ROX
Capacity:   500Gi
Message:
Source:
    Type:   GCEPersistentDisk (a Persistent Disk resource in Google Compute Engine)
    PDName: databases-us-central1-b-kube
    FSType: ext4
    Partition:  0
    ReadOnly:   false
以及
PVC
s,它们在系统中的外观

$ for ns in {development,staging,production}; do kubectl describe --namespace=$ns pvc; done
Name:       databases
Namespace:  development
Status:     Pending
Volume:     databases
Labels:     <none>
Capacity:   0
Access Modes:


Name:       databases
Namespace:  staging
Status:     Pending
Volume:     databases
Labels:     <none>
Capacity:   0
Access Modes:


Name:       databases
Namespace:  production
Status:     Bound
Volume:     databases
Labels:     <none>
Capacity:   0
Access Modes:
<代码>$用于{开发、暂存、生产}中的ns;kubectl描述--namespace=$ns;完成 名称:数据库 名称空间:开发 状态:待定 卷:数据库 标签: 容量:0 访问模式: 名称:数据库 命名空间:暂存 状态:待定 卷:数据库 标签: 容量:0 访问模式: 名称:数据库 名称空间:生产 状态:绑定 卷:数据库 标签: 容量:0 访问模式: 我看到很多等待卷连接/装载pod“mypod anid”“[namespace]”的
超时。未连接/未安装卷的列表=[数据库]
当我执行
$kubectl获取事件时--所有名称空间

当我在生产中扩展RC 1->2时(其中一个pod成功绑定PV),第二个pod无法安装相同的PVC。当我在我的生产命名空间中创建第二个由同一个
PersistentVolume
支持的
ReplicationController
PersistentVolumeClaim
时(回想一下,这就是成功安装pv的pod所在的位置),第二个pod/PVC无法绑定


我错过什么了吗?如何实际使用ROX
PersistentVolume
PersistentVolumeClaim
s?

单个PV在给定时间只能绑定到单个PVC,而不管它是否是现成的(一旦PV/PVC绑定,PV就不能绑定到任何其他PVC)

PV/PVC绑定后,可以从多个POD引用现成的PVC。然而,在Peter的例子中,他不能使用单个PVC对象,因为他试图从多个名称空间引用它(PVC是名称空间,而PV对象不是名称空间)

要使此场景正常工作,请创建多个除名称外完全相同(指同一磁盘)的PV对象。这将允许每个PVC对象(在所有名称空间中)找到要绑定的PV对象