GCE Kubernetes:永久磁盘和永久卷声明

时间:2019-01-15 19:17:06

标签: kubernetes google-compute-engine gce-persistent-disk

方法1(将kubernetes卷附加到Google永久磁盘上,将kubernetes卷声明附加到kubernetes卷上)

apiVersion: v1
kind: PersistentVolume
metadata:
  name: volume-1
spec:
  storageClassName: ""
  capacity:
    storage: 50Gi
  accessModes:
    - ReadWriteOnce
  gcePersistentDisk:
    pdName: pd-test-1
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pv-claim-1
spec:
  storageClassName: ""
  volumeName: volume-1
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

方法2(Kubernetes批量声明​​直接附加到Google永久磁盘)

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pv-claim-1
spec:
  volumeName: pd-test-1
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

方法3(吊舱直接使用Google永久磁盘docs

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: k8s.gcr.io/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  volumes:
  - name: test-volume
    # This GCE PD must already exist.
    gcePersistentDisk:
      pdName: my-data-disk
      fsType: ext4

我不确定在哪种情况下应该使用哪种方法。
三种方法之间有什么区别?如果要将数据存储在Google永久性磁盘上,应该使用哪种方法?

1 个答案:

答案 0 :(得分:2)

按照最佳到最差的顺序:

  • 最佳:方法2-动态卷配置
  • 好的:方法1-通过PersistentVolumeClaim
  • 预先配置的卷
  • 最糟糕:方法3-通过pod 直接引用磁盘而没有 PersistentVolumeClaim

方法3最糟糕,因为您失去了可移植性。如果将Pod移到GCE PD不可用的Kubernetes群集上,则必须使用新群集上可用的任何存储类型来修改Pod。您不应该使用这种方法。

使用方法1和2时,您的PodPersistentVolumeClaim对象仍然可移植,并且其中不包含特定于群集的详细信息。

如果您已经有要与Kubernetes一起使用的现有磁盘,请使用方法1(手动创建PersistentVolumeClaimPersistentVolume)。首先,您创建一个PersistentVolume对象来表示Kubernetes中的磁盘,然后创建一个PersistentVolumeClaim来绑定到该磁盘并充当可以在Pod中使用的指针。您必须小心确保对象指向彼此,有关如何执行操作的详细信息,请参见https://stackoverflow.com/a/34323691/5443528。这是您应该为现有 GCE PD使用的方法。

方法2(手动创建PersistentVolumeClaim,然后让系统自动创建PersistentVolume)。如果您的存储系统支持Kubernetes动态卷配置,则只需创建一个PersistentVolumeClaim对象,您的存储系统就会自动创建一个新卷。 GCE和GKE上的Kubernetes已为GCE PD安装了默认的StorageClass,因此应该可以立即使用,这是创建和使用 new GCE PD时应使用的方法。

有关所有详细信息,请参见https://www.youtube.com/watch?v=uSxlgK1bCuA