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

Ank*_*nde 2 google-compute-engine kubernetes 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
Run Code Online (Sandbox Code Playgroud)

方法 2(Kubernetes 卷声明直接附加到 google 永久磁盘)

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pv-claim-1
spec:
  volumeName: pd-test-1
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
Run Code Online (Sandbox Code Playgroud)

方法3(pod直接使用google持久磁盘文档

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

我不确定在哪些场景下应该使用哪种方法。
三种方法之间有什么区别?如果我想在 google 永久磁盘上存储数据,我应该使用哪一种?

Saa*_*Ali 5

按照从最好到最差方法的顺序:

  • 最佳:方法 2 - 动态卷配置
  • 好的:方法 1 - 通过以下方式预先配置卷PersistentVolumeClaim
  • 最差:方法 3 - 通过 pod 直接引用磁盘,无需 PersistentVolumeClaim

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

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

如果您已有想要与 Kubernetes 一起使用的现有磁盘,请使用方法 1(手动创建PersistentVolumeClaim和)。PersistentVolume首先,您创建一个PersistentVolume对象来表示 Kubernetes 中的磁盘,然后创建一个对象PersistentVolumeClaim来绑定到它并充当可在 Pod 中使用的指针。您必须小心确保对象彼此指向,有关如何执行此操作的详细信息,请参阅/sf/answers/2402658401/ 。这是您应该对现有GCE PD使用的方法。

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

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