持久化卷(Persistent Volume, PV)允许用户将外部存储映射到集群,而持久化卷申请(Persistent Volume Claim, PVC)则类似于许可证,使有授权的应用(Pod)可以使用PV。
●持久化卷(Persistent Volume,PV)。
●持久化卷申请(Persistent Volume Claim,PVC)。
●存储类(Storage Class,SC)。
概括地说,PV代表的是Kubernetes中的存储;PVC就像许可证,赋予Pod访问PV的权限;CS则使分配过程是动态的。
PVC 的全称是:PersistentVolumeClaim(持久化卷声明),PVC 是用户存储的一种声明,PVC 和 Pod 比较类似,Pod 消耗的是节点,PVC 消耗的是 PV 资源,Pod 可以请求 CPU 和内存,而 PVC 可以请求特定的存储空间和访问模式。对于真正使用存储的用户不需要关心底层的存储实现细节,只需要直接使用 PVC 即可。
k8s pvc的使用
ka get pv
ka get pvc
ka get pod
ka get svc/service
Kubernetes为此专门设计了一种集群级别的资源PersistentVolume(简称PV),它借由管理员配置存储系统,而后由用户通过“persistentVolumeClaim”(简称PVC)存储卷直接申请使用的机制大大简化了终端存储用户的配置过程,有效降低了使用难度。
存储卷概述
PersistentVolumeClaim(PVC)通过与 PersistentVolume(PV)的标签选择器匹配来请求存储资源。PV 是集群中的存储资源,PVC 是对 PV 的请求。匹配是通过 PVC 的 spec.selector
字段中定义的标签选择器进行的。PVC 会查找标记为 spec.selector.matchLabels
的 PV,并将其与 PVC 绑定。
例如,如果 PVC 的 spec.selector.matchLabels
字段为 {app: my-app, tier: frontend}
,则它会匹配标记为 app=my-app
和 tier=frontend
的 PV。如果有多个 PV 匹配 PVC 的标签选择器,则 Kubernetes 会根据其可用性和请求的大小等因素选择一个 PV,并将其绑定到 PVC。
需要注意的是,PVC 与 PV 的标签选择器必须匹配,否则 PVC 将无法找到匹配的 PV。
如果 PVC 的 spec.selector.matchLabels
字段没有设置,则 PVC 会尝试与所有可用的 PV 进行绑定,无论它们是否有标签。这种情况下,PVC 只会考虑 PV 的 spec.storageClassName
字段是否匹配 PVC 的 spec.storageClassName
字段。
如果存在多个可用的 PV,PVC 会选择一个 PV 并将其绑定到 PVC。选择的 PV 取决于 PV 的可用性和 PVC 的请求大小。如果没有可用的 PV,则 PVC 会一直等待,直到有 PV 可用或者 PVC 被删除。
需要注意的是,如果 PVC 没有设置标签选择器,将会限制 PVC 与 PV 的绑定。因为 PV 可能有不同的标签或者没有标签,所以 PVC 可能无法绑定到想要的 PV。因此,建议在 PVC 中设置正确的标签选择器,以确保 PVC 能够正确地匹配到所需的 PV。
persistentvolume-controller waiting for first consumer to be created before binding
persistentvolume-controller waiting for first consumer to be created before binding
是 Kubernetes 控制器的一条日志信息,它表示 PersistentVolume(PV)控制器正在等待第一个使用 PersistentVolumeClaim(PVC)的 Pod 创建,然后才会将该 PVC 绑定到 PV 上。
当 Kubernetes 集群中创建一个 PVC 时,PV 控制器会尝试将该 PVC 绑定到一个可用的 PV 上。如果没有可用的 PV,则 PV 控制器会等待,直到有一个 PV 可用或者 PVC 被删除。
当 PV 控制器找到一个可用的 PV 后,它会将该 PV 绑定到 PVC 上,并将状态更新为“已绑定”。然后,Kubernetes 将 PV 挂载到 Pod 中,以供 Pod 使用。
但是,在某些情况下,当 PVC 和 PV 被创建时,PV 控制器可能会等待一段时间才将它们绑定在一起。这通常是因为没有 Pod 使用该 PVC,因此 PV 控制器不会立即将 PVC 绑定到 PV 上,以避免资源浪费。因此,PV 控制器会等待第一个使用该 PVC 的 Pod 创建,然后才会将该 PVC 绑定到 PV 上。
当 PV 控制器等待第一个使用该 PVC 的 Pod 创建时,它会输出 persistentvolume-controller waiting for first consumer to be created before binding
这条日志信息,以告诉您正在等待 Pod 的创建。一旦 Pod 创建成功,PV 控制器将会自动将 PVC 绑定到可用的 PV 上,然后将状态更新为“已绑定”。