2017-07-05 9 views
0

別のポッドから使​​用できる永続ボリュームを作成する際に問題があります(1回の書き込み、もう1回の読み出し)。 GKE:同じPVを複数のポッドにマウントするには

はK8Sページ(プラス readOnly)上の例のようポッド仕様で直接 gcePersistentDiskを使用しようとしました:

apiVersion: v1 
kind: Pod 
metadata: 
    name: test-pd 
spec: 
    containers: 
    - image: gcr.io/google_containers/test-webserver 
    name: test-container 
    volumeMounts: 
    - mountPath: /test-pd 
     name: test-volume 
     readOnly: true 
    volumes: 
    - name: test-volume 
    gcePersistentDisk: 
     pdName: my-data-disk 
     fsType: ext4 
     readOnly: true 

その後... readOnly除いてまったく同じ二ポッドの仕様ではなくなりましたNoDiskConflictエラーです。

第二のアプローチは、このようPersistentVolumePersistentVolumeClaimを使用することです:

apiVersion: v1 
kind: PersistentVolume 
metadata: 
    name: data-standard 
spec: 
    capacity: 
    storage: 1Gi 
    accessModes: 
    - ReadWriteMany 
    gcePersistentDisk: 
    fsType: ext4 
    pdName: data 

--- 
apiVersion: v1 
kind: PersistentVolumeClaim 
metadata: 
    name: data-standard-claim 
spec: 
    accessModes: 
    - ReadWriteMany 
    resources: 
    requests: 
     storage: 1Gi 

しかし、今、私は私に言って、エラーを取得:

MountVolume.MountDevice failed for volume "kubernetes.io/gce-pd/xxx" (spec.Name: "yyy") pod "6ae34476-6197-11e7-9da5-42010a840186" (UID: "6ae34476-6197-11e7-9da5-42010a840186") with: mount failed: exit status 32 Mounting command: mount Mounting arguments: /dev/disk/by-id/google-gke-cluster-xxx /var/lib/kubelet/plugins/kubernetes.io/gce-pd/mounts/gke-cluster-xxx [ro] Output: mount: wrong fs type, bad option, bad superblock on /dev/sdb, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so. 
Error syncing pod, skipping: timeout expired waiting for volumes to attach/mount for pod "default"/"my-deployment". list of unattached/unmounted volumes=[data] 

そうでGCEディスクを使用する正しい方法は何ですか複数のポッド。

PS:Kubernetes https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modesによる1.6.6

答えて

0

は、GCEディスクはReadWriteManyをサポートしていません。これが問題を説明しているかどうかはわかりませんが、別の互換性のあるボリュームタイプを試してみることをお勧めします。

+0

2番目のアプローチで 'ReadWriteOnce'が動作しているようですが、すでにあるPVを使用する代わりに新しいPVを作成します – pkyeck

+0

動的プロビジョニングが有効になっている可能性があるので、新しいPVを作成しようとしますctuallyです。 –

0

ReadWriteManyの代わりにReadOnlyManyを使用できますか?

Accessmodes:

ReadWriteOnce - ボリュームは、単一のノードによって読み書きとして実装することができる

ReadOnlyMany - ボリュームが読み取り専用でマウントすることができます多くのノード

ReadWriteMany - ボリュームはここでReadWriteMany

をサポートしていない多くのノード

GCE永続ディスクで読み書きとしてマウントすることができプロバイダのリストがあるとaccessmodesをサポート:

https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes-1

+0

私は 'ReadWriteOnce'を" write once "と理解しましたが、"どこでも読んでいます "...しかし、私は間違っていました:( – pkyeck

+0

[GKEの例はこちら](https://cloud.google.com/kubernetes-engine/) docs/how-to/stateful-apps)にアクセスします。 – Carlos

関連する問題