【问题标题】:Creating a PersistentVolume with non-existent storage class succeeds使用不存在的存储类创建 PersistentVolume 成功
【发布时间】:2023-03-21 21:03:02
【问题描述】:

我正在创建以下 PersistentVolume

▶ cat mypv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: myvolume
  labels:
    type: local
spec:
  storageClassName: normal
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
    - ReadWriteMany
  hostPath:
    path: "/etc/foo"

但是,创建之后

▶ k create -f mypv.yaml
persistentvolume/myvolume created

我意识到没有normal StorageClass 可用。

▶ k get sc
NAME                 PROVISIONER                RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
standard (default)   k8s.io/minikube-hostpath   Delete          Immediate           false                  8d

那么PersistentVolume 创建一个不存在的存储类怎么会成功呢?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    请注意,当需要动态配置卷时,会调用存储类。它在 GCD、AWS、Azure 等云提供商上运行良好。

    另一方面,HostPath 卷是静态配置的。存储类在这些 PV 定义中被忽略。因此,在您的情况下,创建的 pv 没有错误。 pv 绑定到宿主机的存储上。

    点击以下链接获取帮助 --> https://docs.openshift.com/container-platform/4.2/storage/persistent_storage/persistent-storage-hostpath.html

    【讨论】:

      【解决方案2】:

      hostPath的情况下storageClassName实际上并没有被忽略。
      它仍然用于PVC绑定。

      配置文件指定卷在 /mnt/data on 集群的节点。 <...>
      它定义了 StorageClass 名称手册 对于 PersistentVolume,它将用于绑定 对此 PersistentVolume 的 PersistentVolumeClaim 请求。

      https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#create-a-persistentvolume

      如果集群为hostPath 提供动态配置器(就像 Minikube 一样),它也可以用于动态配置。

      【讨论】:

        【解决方案3】:

        如果您启用了Dynamic Provisioning,您可以按需创建存储类。 MiniKube 有它的 own 动态配置,它使用 hostpath

        【讨论】:

          猜你喜欢
          • 2019-08-03
          • 1970-01-01
          • 2019-02-28
          • 2018-08-10
          • 1970-01-01
          • 2011-09-06
          • 2020-03-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多