如何将PV和PVC用于“可靠”持久卷?

时间:2018-10-08 06:30:05

标签: kubernetes google-cloud-platform persistent-volumes persistent-volume-claims

我遵循了这篇文章中的说明: how to bound a Persistent volume claim with a gcePersistentDisk?

当我应用它时,我的PVC没有绑定到PV,而是在事件列表中出现了此错误:

14s         17s          2         test-pvc.155b8df6bac15b5b   PersistentVolumeClaim               Warning   ProvisioningFailed   persistentvolume-controller   Failed to provision volume with StorageClass "standard": claim.Spec.Selector is not supported for dynamic provisioning on GCE

我发现了一个github帖子,其中提出了一些可以解决此问题的方法:

https://github.com/coreos/prometheus-operator/issues/323#issuecomment-299016953

但不幸的是,这没有什么区别。

在某处是否有一个“汤到汤”的文档,告诉我们究竟如何使用PV和PVC来创建真正的持久卷?具体来说,您可以在哪里关闭pv和pvc并在以后还原它们,并取回所有内容?因为现在看来,如果由于任何原因丢失了PVC,则会失去与音量的连接,并且无法重新将其恢复。

1 个答案:

答案 0 :(得分:2)

默认的StorageClassgcePesistentDisk不兼容。这样的事情会起作用:

$ cat <<EOF | kubectl create -f -
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: slow
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard
  replication-type: none
EOF

然后在您的PVC上

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
  labels:
    app: test
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: "slow" <== specify the storageClass
  resources:
    requests:
      storage: 2Gi
  selector:
    matchLabels:
      app: test

您还可以将“ slow” 设置为default storageClass,在这种情况下,您不必在PVC上指定它:

$ kubectl patch storageclass slow -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'