GKE ReadOnlyMany Persistent Volume с утверждениями ReadOnlyMany в нескольких пространствах имен

google-compute-engine kubernetes google-kubernetes-engine

947 просмотра

1 ответ

2346 Репутация автора

У меня есть образ диска с зеркалами некоторых протеиновых баз данных (HHsearch, BLAST, PDB и т. Д.), Которые я создаю с помощью некоторого инструментария CI и записываю на диск GCE для запуска. Я хотел бы открыть ReadOnlyManyPV в Podsсозданном ReplicationControllersв нескольких пространствах имен с помощью , PersistentVolumeClaimsно я не получаю ожидаемый результат.

Конфигурация 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

И PVCкак они выглядят в системе;

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

Я вижу много, timeout expired waiting for volumes to attach/mount for pod "mypod-anid""[namespace]". list of unattached/unmounted volumes=[databases]когда я делаю$ kubectl get events --all-namespaces

Когда я масштабирую RC 1-> 2 в производстве (где один модуль сумел связать PV), второй модуль не может установить тот же PVC. Когда я создаю второе ReplicationControllerи PersistentVolumeClaimв моем производственном пространстве имен (напомним, что именно здесь находится модуль, успешно смонтировавший pv), поддерживаемый тем же PersistentVolumeсамым, второй модуль Pod / PVC не может связываться.

Я что-то пропустил? Как можно использовать ROX PersistentVolumeс PersistentVolumeClaims?

Автор: pnovotnak Источник Размещён: 18.07.2016 06:55

Ответы (1)


5 плюса

977 Репутация автора

Решение

Один PV может быть привязан только к одному PVC в данный момент времени, независимо от того, является ли он ReadOnlyMany или нет (как только PV / PVC связывается, PV не может связываться с любым другим PVC).

После привязки PV / PVC к каналам ReadOnlyMany можно ссылаться из нескольких модулей. Однако в случае Питера он не может использовать один объект PVC, так как он пытается ссылаться на него из нескольких пространств имен (PVC - это пространство имен, в то время как объекты PV - нет).

Чтобы этот сценарий работал, создайте несколько идентичных объектов PV (ссылающихся на один и тот же диск), за исключением имени. Это позволит каждому объекту PVC (во всех пространствах имен) найти объект PV для привязки.

Автор: Saad Ali Размещён: 02.08.2016 11:04
Вопросы из категории :
32x32