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

GCE Kubernetes: Persistent disk and Persistent Volume claim

方法 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

方法三(pod直接使用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 永久性磁盘上,我应该使用哪一种?

从最好到最差的方法:

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

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

使用方法 1 和方法 2,您的 PodPersistentVolumeClaim 对象保持可移植性并且不包含特定于集群的详细信息。

如果您已有要与 Kubernetes 一起使用的现有磁盘,请使用方法 1(手动创建 PersistentVolumeClaimPersistentVolume)。首先,您创建一个 PersistentVolume 对象来表示 Kubernetes 中的磁盘,然后您创建一个 PersistentVolumeClaim 来绑定它并充当您可以在 Pod 中使用的指针。您必须小心确保对象相互指向,请参阅 了解如何做到这一点的详细信息。这是您应该用于 现有 GCE PD 的方法。

方法二(手动创建一个PersistentVolumeClaim,让系统自动创建一个PersistentVolume)。如果您的存储系统支持 Kubernetes 动态卷配置,您只需创建一个 PersistentVolumeClaim 对象,您的存储系统将自动创建一个新卷。 GCE 和 GKE 上的 Kubernetes 为 GCE PD 安装了默认的 StorageClass,因此这应该开箱即用,这是您应该用来创建和使用 new GCE PD 的方法。

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