PV 和 PVC 中 storageClassName 的必要性

3

我按照以下方式创建了PV:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: foo-pv
spec:
  storageClassName: "my-storage"
  claimRef:
    name: foo-pvc
    namespace: foo

为什么我们需要在 PV 中指定 storageClassName?当 StorageClass 创建 PV 时,为什么要在 PV 中指定 storageClassName?
能否有人帮助我理解这个问题?
2个回答

1
根据 Kubernetes 官方文档:
为什么需要在 PV 中指定 storageClassName?
每个存储类都包含 provisioner、parameters 和 reclaimPolicy 字段,这些字段用于在属于该类的 PersistentVolume 需要动态创建时。存储类对象的名称是重要的,用户可以通过它来请求特定的存储类。管理员在首次创建存储类对象时设置名称和其他参数,并且一旦创建后就不能更新对象。
当存储类创建 PV 时,为什么需要在 PV 中指定 storageClassName?
PersistentVolume(PV)是集群中已由管理员或使用存储类动态创建的存储资源。它与节点一样是集群中的资源。集群管理员需要能够提供多种持久卷,其差异不仅限于大小和访问模式,而且不会将这些细节暴露给用户。为了满足这些需求,有 StorageClass 资源。
如果您想了解更多关于存储类资源的信息,请访问此链接,或者这个链接以了解更多有关持久化卷的信息。

1
您可以拥有两种类型的 PV:
  1. 由 StorageClasses 动态分配的 PV
  2. 由管理员手动/静态创建的 PV
动态 -> 这通常在云环境中使用,例如当您想要将 Azure blob/file 挂载到 pod 上时。在这种情况下,您无法控制 PV 名称,StorageClass 创建并绑定随机创建的 PV。

enter image description here

手动操作 -> 这将提供更多的控制,您可以为 PV 分配特定的名称,具有保留策略的特定 StorageClass(在 Pod 释放后不删除 PV)。结果更容易重用该 PV,知道它的名称和 StorageClass 成员资格。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接