如何将 PV 和 PVC 用于*可靠*持久卷?
How do I use PV and PVC for *reliable* persistent volumes?
我按照 post 中的说明操作:
当我应用它时,我的 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 posting 提示可以解决这个问题:
https://github.com/coreos/prometheus-operator/issues/323#issuecomment-299016953
但不幸的是,这并没有什么不同。
是否有详尽的文档告诉我们如何使用 PV 和 PVC 来创建真正持久的卷?具体来说,您可以在哪里关闭 pv 和 pvc 并稍后恢复它们,并取回所有内容?因为现在看来,如果您出于任何原因丢失了 PVC,您将失去与您的卷的连接并且无法再次恢复它。
默认 StorageClass
与 gcePesistentDisk
不兼容。像这样的东西会起作用:
$ 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"}}}'
我按照 post 中的说明操作:
当我应用它时,我的 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 posting 提示可以解决这个问题:
https://github.com/coreos/prometheus-operator/issues/323#issuecomment-299016953
但不幸的是,这并没有什么不同。
是否有详尽的文档告诉我们如何使用 PV 和 PVC 来创建真正持久的卷?具体来说,您可以在哪里关闭 pv 和 pvc 并稍后恢复它们,并取回所有内容?因为现在看来,如果您出于任何原因丢失了 PVC,您将失去与您的卷的连接并且无法再次恢复它。
默认 StorageClass
与 gcePesistentDisk
不兼容。像这样的东西会起作用:
$ 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"}}}'