在 PV/PVC 中引用存储类之前,是否需要在 Kubernetes 中创建存储类?

May*_*dam 3 kubernetes persistent-volumes persistent-volume-claims kubernetes-pvc

alpha-pv我在 kubernetes 集群中有一个 PV ,并创建了一个与 PV 规格匹配的 PVC。PV 使用Storage Class: slow. 但是,当我检查集群中是否存在存储类时,没有存储类存在,但我的 PVC 仍然是BoundPV。

当 PV/PVC 中引用的存储类在集群中不存在时,这怎么可能?

如果我没有在 PVC 中提及存储类,我会收到指出存储类集的错误消息。集群中已经存在一个 PV,其具有RWO访问模式、1Gi存储大小以及名为 的存储类slow。但在检查存储类详细信息时,集群中没有存储类资源。

slow如果我在 PVC 中添加存储类名称mysql-alpha-pvc,则 PVC 会绑定到 PV。但我不清楚当slow集群中不存在名为 PV/PVC 的存储类时,会发生这种情况。

PVC 中的存储类别错误

PVC 绑定到 PV,即使集群中不存在名为“slow”的存储类

moo*_*tte 6

简短回答

这取决于。

理论

使用 a 的主要目的之一storageClass动态配置。这意味着一旦持久卷声明请求存储,持久卷将被自​​动配置:立即或在创建使用它的 Pod 之后PVC。请参阅卷绑定模式

还:

StorageClass 为管理员提供了一种描述他们提供的存储“类别”的方法。不同的类别可能映射到服务质量级别、备份策略或集群管理员确定的任意策略。Kubernetes 本身对于类代表什么没有意见。这个概念有时在其他存储系统中称为“配置文件”。

参考

怎么运行的

例如,如果在云中使用 kubernetes(Google GKE、Azure AKS 或 AWS EKS),它们已经有预定义的storageClasses,例如来自 Google GKE 的:

$ kubectl get storageclasses
NAME                 PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
premium-rwo          pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   27d
standard (default)   kubernetes.io/gce-pd    Delete          Immediate              true                   27d
standard-rwo         pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   27d
Run Code Online (Sandbox Code Playgroud)

因此您可以创建PVC并参考storageClassPV将为您创建。


您面临的另一个场景是您可以创建PVCPV使用任何自定义storageClassName仅用于绑定目的。通常它用于在本地测试某些东西。这也称为静态配置

在这种情况下,您可以创建 Kubernetes 服务器中不存在的“假”存储类。

请参阅此类绑定的示例

它定义了 PersistentVolume 的 StorageClass 名称手册,该名称将用于将 PersistentVolumeClaim 请求绑定到此 PersistentVolume。

有用的链接: