【问题标题】:How do I use PV and PVC for *reliable* persistent volumes?如何将 PV 和 PVC 用于*可靠的*持久卷?
【发布时间】:2018-10-09 14:24:41
【问题描述】:

我按照这篇文章中的说明进行操作: 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,您将失去与您的卷的连接,并且无法重新找回它。

【问题讨论】:

  • 在这里查看官方的 k8s 文档 - kubernetes.io/docs/concepts/storage/persistent-volumes/…
  • 您能分享一下您的 PV 和 PVC 的 YAML 配置吗?这可能有助于找到解决方案。
  • VAS - 我使用了问题中第一个链接中的 yaml,特别是最后的 yaml,他说他找到了解决方案。我试过了,得到了我在问题中指出的错误。

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


【解决方案1】:

默认的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"}}}'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 2022-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    相关资源
    最近更新 更多