GKE:在多个吊舱上安装相同PV的正确方法

pky*_*eck 4 kubernetes google-kubernetes-engine

我在创建一个永久卷时遇到了麻烦,该永久卷可以从不同的Pod中使用(一次写入,另一次读取)。

尝试gcePersistentDisk直接在pod规范中使用,如k8s页面(加号readOnly)中的示例所示:

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
Run Code Online (Sandbox Code Playgroud)

然后在第二个pod规格中,除了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
Run Code Online (Sandbox Code Playgroud)

但是现在我收到一个错误消息:

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]
Run Code Online (Sandbox Code Playgroud)

那么,使用具有多个Pod的GCE磁盘的正确方法是什么。

PS:Kubernetes 1.6.6

Jav*_*ron 5

根据https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes的说明,GCE磁盘不支持ReadWriteMany。我不确定这是否能解释问题,但我建议您尝试使用其他兼容的卷类型。