介绍 Kubernetes 存储系统 Storage: PV, PVC, SC

编程之路的点滴 2024-08-05 ⋅ 10 阅读

在 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 官方文档。

参考资料:


全部评论: 0

    我有话说: