在 Kubernetes 中,存储是一个重要的组件,它允许我们在容器和宿主机之间进行数据持久化和共享。Kubernetes 提供了一些不同类型的存储资源,如 Persistent Volume(PV)、Persistent Volume Claim(PVC)和 Storage Class(SC),来满足不同应用的存储需求。在本文中,我们将深入了解这些存储相关的概念和它们在 Kubernetes 中的应用。
Persistent Volume(PV)
持久卷(Persistent Volume)是集群中的一块抽象存储,它与物理存储无关。PV 可以通过各种不同的方式配置,如网络存储、本地存储、分布式存储等。PV 可以手动创建,也可以由动态存储配置器(如 CSI 驱动程序)自动创建。
PV的属性
每个 PV 都具有一组属性,如大小、访问模式(例如读写单一、读写多个)、存储类等。这些属性决定了如何使用 PV。当创建 PV 时,可以指定这些属性值。示例如下:
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: slow
...
capacity
:指定 PV 的容量大小,以字节、千字节、兆字节或其他合适的单位表示。accessModes
:定义访问 PV 的模式。包括ReadWriteOnce
(一个可读可写的节点),ReadOnlyMany
(多个只读的节点)和ReadWriteMany
(多个可读可写的节点)。persistentVolumeReclaimPolicy
:指定当 PVC 从 PV 解除绑定时,如何处理 PV 中的数据。有三种可选的回收策略:Delete
(直接删除 PV)、Retain
(保留 PV 和数据,需要手动清理)和Recycle
(清除 PV 内容,但不删除 PV)。storageClassName
:指定 PV 的存储类,与 PVC 中的storageClassName
匹配才能自动绑定。
Persistent Volume Claim(PVC)
持久卷声明(Persistent Volume Claim)是用于申请 PV 的资源对象。PVC 可以通过 PVC 模板定义,并与其所需的 PV 相匹配。当 PVC 被创建时,Kubernetes 调度器会查找可用(未绑定到其他 PVC 或已调度的 Pod)的 PV 并将其绑定到 PVC。
PVC的属性
PVC 具有以下一些基本的属性:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: slow
...
accessModes
:定义 PVC 的访问模式。可以和 PV 中的访问模式进行匹配。resources.requests.storage
:指定 PVC 所需的存储容量。storageClassName
:指定要使用的存储类,用于匹配可用的 PV。
Storage Class (SC)
存储类(Storage Class)是一种用于动态创建 PV 的对象。它定义了一组用于创建 PV 的参数和参数值,例如用于创建底层存储的卷类型、提供者等。通过使用 SC,Kubernetes 可以基于 PVC 的需求自动创建 PV。这种动态分配存储的方式简化了存储管理,并提供了弹性、可伸缩的存储解决方案。
SC的属性
创建 SC 时可以指定一些参数,示例如下:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: slow
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
io1: "false"
fsType: ext4
...
provisioner
:指定用于创建 PV 的存储插件(例如 CSI 驱动程序、FlexVolume 驱动程序等)。parameters
:定义了创建 PV 时所需的其他参数,如存储类型、文件系统类型等。
总结
在 Kubernetes 中,PV、PVC 和 SC 提供了强大而灵活的存储管理功能。PV 充当集群中的持久性存储,PVC 用于申请和使用 PV,而 SC 则简化了 PV 的动态创建和管理。通过使用这些存储资源,我们可以轻松地将持久性存储集成到我们的 Kubernetes 应用中,实现数据的持久化和共享。
希望本文对您了解 Kubernetes 存储系统有所帮助。了解更多关于 PV、PVC 和 SC 的详细信息,请参考 Kubernetes 官方文档。
参考资料:
本文来自极简博客,作者:编程之路的点滴,转载请注明原文链接:介绍 Kubernetes 存储系统 Storage: PV, PVC, SC