【发布时间】: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。当我在我的生产命名空间中创建第二个 ReplicationController 和 PersistentVolumeClaim 时(回想一下,这是成功安装 pv 的 pod 所在的位置),由相同的 PersistentVolume 支持,第二个 Pod/PVC 无法绑定。
我错过了什么吗?应该如何真正使用 ROX PersistentVolume 和PersistentVolumeClaims?
【问题讨论】:
标签: google-compute-engine kubernetes google-kubernetes-engine