【问题标题】:Required value: must specify a volume type when statically provisioning PV必需值:静态配置 PV 时必须指定卷类型
【发布时间】:2019-09-21 03:56:42
【问题描述】:

尝试使用 GCP SSD 存储静态配置 PV。错误并显示以下消息:

The PersistentVolume "monitoring" is invalid: spec: Required value: must specify a volume type

重现步骤:

$ cat storage.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ssd
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-ssd
reclaimPolicy: Retain


$ kubectl apply -f storage.yaml
storageclass.storage.k8s.io/ssd created


$ cat pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: monitoring
spec:
  storageClassName: ssd
  capacity:
    storage: 50Gi
  persistentVolumeReclaimPolicy: Retain
  accessModes:
    - ReadWriteOnce


$ kubectl apply -f pv.yaml
The PersistentVolume "monitoring" is invalid: spec: Required value: must specify a volume type

Kubernetes 版本:

Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:11:31Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"12+", GitVersion:"v1.12.6-gke.10", GitCommit:"aaf0906400b5fc1d858ce0566a571e4f3ed06b9f", GitTreeState:"clean", BuildDate:"2019-03-30T19:30:48Z", GoVersion:"go1.10.8b4", Compiler:"gc", Platform:"linux/amd64"}

【问题讨论】:

  • 你能用"ssd"代替ssd吗?
  • 我认为,当你使用 storageclass 时,你需要提供 persistencevolumeclaim,然后它会动态创建一个 pv
  • @SureshVishnoi 不。注释掉 storageClass 也无济于事。
  • 需要创建PVC+storageClass==PV,使用stroageclass时不需要手动创建PV
  • 知道了。这就说得通了。谢谢。

标签: kubernetes google-kubernetes-engine


【解决方案1】:

如果使用配置器,您通常不会自己创建 PV。只需创建一个 PVC 需要创建的存储类,GKE 就会为 PV 提供请求的存储大小和类型:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: my-retain-ssd-storage
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi
  storageClassName: ssd

【讨论】:

  • 我可以通过这个PVC指定reclaimPolicy吗?我不想手动修补 pv,我希望它由 PVC 自动创建。
  • 如原问题所述:将reclaimPolicy 添加到SC。
  • 另外,运行 kubectl get sc 以查看可用的存储类。 GCE 支持standardssd
【解决方案2】:

无需创建存储类,只需更正您的要求

查看我的文件,这里添加了 HostPath。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: log-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  hostPath:
    path: "/opt/volume/nginx"

和PVC一样

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: log-claim
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 200Mi
  storageClassName: manual

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 2023-03-28
    相关资源
    最近更新 更多