【问题标题】:GKE ReadOnlyMany Persistent Volume with ReadOnlyMany Claims in Multiple Namespaces在多个命名空间中具有 ReadOnlyMany 声明的 GKE ReadOnlyMany 持久卷
【发布时间】:2016-07-18 18:55:06
【问题描述】:

我有一个磁盘映像,其中包含一些蛋白质数据库(HHsearch、BLAST、PDB 等)的镜像,我使用一些 CI 工具构建,并写入 GCE 磁盘以运行。我想通过PersistentVolumeClaims 在多个命名空间中访问由ReplicationControllers 创建的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"

加载到 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 配置都是一样的,看起来像这样;

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: databases
spec:
  accessModes:
    - ReadOnlyMany
  resources:
    requests:
      storage:
  volumeName: databases

还有PVCs 在系统中的样子;

$ 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:

当我看到$ kubectl get events --all-namespaces 时,我看到很多timeout expired waiting for volumes to attach/mount for pod "mypod-anid""[namespace]". list of unattached/unmounted volumes=[databases]

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

我错过了什么吗?应该如何真正使用 ROX PersistentVolumePersistentVolumeClaims?

【问题讨论】:

    标签: google-compute-engine kubernetes google-kubernetes-engine


    【解决方案1】:

    单个 PV 在给定时间只能绑定到单个 PVC,无论它是否为 ReadOnlyMany(一旦 PV/PVC 绑定,PV 就不能绑定到任何其他 PVC)。

    一旦绑定了 PV/PVC,ReadOnlyMany PVC 可能会被多个 pod 引用。然而,在 Peter 的情况下,他不能使用单个 PVC 对象,因为他试图从多个命名空间中引用它(PVC 是命名空间,而 PV 对象不是)。

    要使此方案起作用,请创建多个相同的 PV 对象(指同一个磁盘),但名称除外。这将允许每个 PVC 对象(在所有命名空间中)找到要绑定的 PV 对象。

    【讨论】:

      猜你喜欢
      • 2020-01-05
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多