【问题标题】:Need of storageClassName in PV and PVCPV和PVC中需要storageClassName
【发布时间】:2022-11-09 17:09:44
【问题描述】:
我创建PV如下:
apiVersion: v1
kind: PersistentVolume
metadata:
name: foo-pv
spec:
storageClassName: "my-storage"
claimRef:
name: foo-pvc
namespace: foo
为什么我们需要在 PV 中给出 storageClassName? Storage类创建PV时,为什么要在PV中赋予storageClassName?
有人可以帮助我理解这一点吗?
【问题讨论】:
标签:
kubernetes
minikube
persistent-volumes
【解决方案1】:
根据 Kubernetes 官方文档:
为什么我们需要在 PV 中给出 storageClassName?
每个存储类包含字段供应商、参数和
回收政策,当一个 PersistentVolume 属于
该类需要动态配置。
StorageClass 对象的名称很重要,它是用户可以
请求一个特定的类。管理员设置名称等
首次创建时类的参数存储类对象,以及
对象一旦创建就无法更新。
Storage类创建PV时,为什么要在PV中赋予storageClassName?
PersistentVolume (PV) 是集群中的一块存储,具有
由管理员配置或使用动态配置存储类.它是集群中的资源,就像节点是集群资源一样。
集群管理员需要能够提供各种
PersistentVolume 的不同之处不仅仅是大小和访问模式,
无需让用户了解这些卷的详细信息
实施的。针对这些需求,有存储类资源。
如果您想了解更多关于 Storage 类资源的信息,请关注 this link 或 this one 以了解更多关于 Persistent Volumes 的信息。
【解决方案2】:
您可以拥有 2 种类型的 PV:
- 由 StorageClasses 动态配置
- 由管理员手动/静态创建
动态地-> 这通常在云中使用,例如,当您想要将 Azure blob/文件挂载到 pod 时。在这种情况下,您无法控制 PV 名称、StorageClass 创建和绑定随机创建的 PV。
手动-> 这将给予更多控制权,您可以为 PV 分配一个特定的名称,一个具有 Retain 策略的特定 StorageClass(在 Pod 释放后不要删除 PV)。结果是更容易重用该 PV,知道它的名称和 StorageClass 成员资格。