GKE 上的持久卷问题

Persistent Volume Issue on GKE

所以我正在尝试使用以下定义在 GKE 上创建持久卷:


apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv01-3gi
  labels:
    env: prod
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - 'ReadWriteOnce'
  storageClassName: standard

然而,当我尝试应用它时,我收到如下所示的错误消息:

➜ kubectl apply -f pv-1.yaml
The PersistentVolume "pv01-3gi" is invalid: spec: Required value: must specify a volume type

我的理解是卷类型由设置为标准的存储 class 指示(这是 GKE

提供的默认存储 class

➜ kubectl get storageclass
NAME                 PROVISIONER            AGE
standard (default)   kubernetes.io/gce-pd   16d

我做错了什么?

如果使用动态供应器,则无需自行创建 PV。

只需创建一个具有存储 class 的 PVC,GKE 将自动为 PV 提供请求的存储大小。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ssd-storage
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10
  storageClassName: ssd

您缺少 spec 中的卷类型。例如,我在此处添加了 nfs 类型。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv01-3gi
  labels:
    env: prod
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  storageClassName: standard
  volumeMode: Filesystem
  nfs: 
    path: /opt/nfs 
    server: nfs.f22 
    readOnly: false

请注意,直接配置的持久卷 上的存储 类 仅用于通过持久卷声明引用这些卷的目的

这里的意图是系统管理员设置一堆持久卷并处理引用集群外部硬盘驱动器设备的细节。然后,应用程序开发人员可以通过 Persistent Volume Claims 引用这些卷,比喻地说:“请给我找一个至少有 5GB 存储空间的 StorageClass SSD 卷”。

换句话说,如果您直接创建 PV,请确保您提供准确的配置,包括对物理存储设备的引用。