searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

StorageClass 与 k8s-hostpath-provisioner的使用

2024-06-11 08:55:07
41
0

StorageClass

是 Kubernetes 中定义存储类别的 API 对象。它包含以下关键部分:

供应器(Provisioner):指定哪个供应器负责动态创建 PV。对于 k8s-hostpath-provisioner,这个值是 torchbox.com/hostpath。
参数(Parameters):供应器所需的配置参数,例如 pvDir,它指定了在主机上用于存储卷的根路径。
回收策略(Reclaim Policy):定义 PV 在释放后是删除还是保留。
卷绑定模式(Volume Binding Mode):控制 PVC 绑定到 PV 的时机。

k8s-hostpath-provisioner

k8s-hostpath-provisioner 是一个为 Kubernetes 设计的动态存储供应器,它允许集群使用本地或网络文件系统的存储资源。这个项目特别适用于以下情况:

当 Kubernetes 原生不支持某些存储系统时,例如 ceph-fuse。
当需要避免将持久卷(PV)的凭证暴露给用户时。
当想要集中管理网络存储配置时,例如在 /etc/fstab 中设置,使得存储配置的变更更加灵活。

torchbox.com/hostpath

torchbox.com/hostpath 是 k8s-hostpath-provisioner 项目中定义的供应器的唯一标识符。在 Kubernetes 的 StorageClass 中使用这个标识符来告诉系统使用 k8s-hostpath-provisioner 来处理存储请求。这个名称是供应器的“品牌”,用于区分不同的存储供应器。

使用流程

部署网络存储:首先,在每个 Kubernetes 节点上挂载网络存储。这可以通过 systemd 挂载单元或 /etc/fstab 完成,并且必须在所有主机上使用相同的挂载路径。

创建 StorageClass:定义一个 StorageClass 对象,指定 provisioner 为 torchbox.com/hostpath,并设置所需的参数,如 pvDir。

启动 k8s-hostpath-provisioner:可以作为集群外部的独立程序运行,或作为 Kubernetes 集群中的一个部署运行。它将监听 PVC 的创建请求,并为它们动态创建 PV。

创建 PVC:用户或应用程序创建一个 PVC,请求特定的存储资源。如果 PVC 中指定了 StorageClass,则使用该类定义的供应器和参数来供应存储。

动态供应 PV:k8s-hostpath-provisioner 检测到 PVC 请求后,根据 StorageClass 中定义的规则,在网络存储上创建相应的 PV,并绑定到 PVC。

使用存储:应用程序通过 PVC 挂载 PV,从而使用请求的存储资源。

配置的关联

k8s-hostpath-provisioner 的上下文中,StorageClass 中配置的 pvDirk8s-hostpath-provisioner 挂载的卷之间的关系和作用:

  1. StorageClass 中的 pvDir 参数

    • pvDirStorageClass 定义中的一个参数,它指定了在网络存储上用于创建 PV 的根目录路径。
    • 这个路径必须位于所有 Kubernetes 节点上都已挂载的网络文件系统上。
    • k8s-hostpath-provisioner 接收到 PVC 请求时,它会在 pvDir 指定的路径下为该 PVC 创建一个子目录,用于存储 PVC 的数据。
  2. k8s-hostpath-provisioner 挂载的卷

    • k8s-hostpath-provisioner 的部署配置中,需要挂载网络存储卷,这通常在 deployment.yaml 中定义。
    • 这个挂载卷的路径应该指向网络存储上的某个位置,通常是 pvDir 指定的相同路径或其父目录。
    • 这样配置的目的是让 k8s-hostpath-provisioner 能够访问网络存储,并在该存储上创建和管理 PV。
  3. 二者的关系

    • pvDir 作为 StorageClass 的一部分,定义了存储卷的“逻辑”位置,即在网络存储上应该创建 PV 数据的位置。
    • k8s-hostpath-provisioner 挂载的卷则提供了对这些存储位置的“物理”访问,使得供应器能够操作这些存储资源。
    • k8s-hostpath-provisioner 根据 PVC 请求创建 PV 时,它会在挂载的卷(即网络存储)的 pvDir 路径下创建具体的存储卷。
  4. 工作流程示例

    • 假设网络存储已经挂载在所有节点的 /ceph/pvs 路径上。
    • StorageClass 中配置 pvDir: /ceph/pvs
    • k8s-hostpath-provisioner 的部署配置中也挂载了 /ceph/pvs 路径。
    • 当 PVC 请求到来时,k8s-hostpath-provisioner/ceph/pvs 下为 PVC 创建一个子目录,例如 /ceph/pvs/pvc-1234
    • PVC 绑定到这个新创建的 PV,应用程序就可以通过 PVC 使用这个存储卷了。

通过这种方式,StorageClass 中的 pvDir 参数和 k8s-hostpath-provisioner 挂载的卷协同工作,确保了存储卷的正确创建和管理。这种设计允许集中管理网络存储配置,同时保持了 Kubernetes 存储供应的灵活性和动态性。

0条评论
0 / 1000
冯****豪
10文章数
3粉丝数
冯****豪
10 文章 | 3 粉丝
冯****豪
10文章数
3粉丝数
冯****豪
10 文章 | 3 粉丝
原创

StorageClass 与 k8s-hostpath-provisioner的使用

2024-06-11 08:55:07
41
0

StorageClass

是 Kubernetes 中定义存储类别的 API 对象。它包含以下关键部分:

供应器(Provisioner):指定哪个供应器负责动态创建 PV。对于 k8s-hostpath-provisioner,这个值是 torchbox.com/hostpath。
参数(Parameters):供应器所需的配置参数,例如 pvDir,它指定了在主机上用于存储卷的根路径。
回收策略(Reclaim Policy):定义 PV 在释放后是删除还是保留。
卷绑定模式(Volume Binding Mode):控制 PVC 绑定到 PV 的时机。

k8s-hostpath-provisioner

k8s-hostpath-provisioner 是一个为 Kubernetes 设计的动态存储供应器,它允许集群使用本地或网络文件系统的存储资源。这个项目特别适用于以下情况:

当 Kubernetes 原生不支持某些存储系统时,例如 ceph-fuse。
当需要避免将持久卷(PV)的凭证暴露给用户时。
当想要集中管理网络存储配置时,例如在 /etc/fstab 中设置,使得存储配置的变更更加灵活。

torchbox.com/hostpath

torchbox.com/hostpath 是 k8s-hostpath-provisioner 项目中定义的供应器的唯一标识符。在 Kubernetes 的 StorageClass 中使用这个标识符来告诉系统使用 k8s-hostpath-provisioner 来处理存储请求。这个名称是供应器的“品牌”,用于区分不同的存储供应器。

使用流程

部署网络存储:首先,在每个 Kubernetes 节点上挂载网络存储。这可以通过 systemd 挂载单元或 /etc/fstab 完成,并且必须在所有主机上使用相同的挂载路径。

创建 StorageClass:定义一个 StorageClass 对象,指定 provisioner 为 torchbox.com/hostpath,并设置所需的参数,如 pvDir。

启动 k8s-hostpath-provisioner:可以作为集群外部的独立程序运行,或作为 Kubernetes 集群中的一个部署运行。它将监听 PVC 的创建请求,并为它们动态创建 PV。

创建 PVC:用户或应用程序创建一个 PVC,请求特定的存储资源。如果 PVC 中指定了 StorageClass,则使用该类定义的供应器和参数来供应存储。

动态供应 PV:k8s-hostpath-provisioner 检测到 PVC 请求后,根据 StorageClass 中定义的规则,在网络存储上创建相应的 PV,并绑定到 PVC。

使用存储:应用程序通过 PVC 挂载 PV,从而使用请求的存储资源。

配置的关联

k8s-hostpath-provisioner 的上下文中,StorageClass 中配置的 pvDirk8s-hostpath-provisioner 挂载的卷之间的关系和作用:

  1. StorageClass 中的 pvDir 参数

    • pvDirStorageClass 定义中的一个参数,它指定了在网络存储上用于创建 PV 的根目录路径。
    • 这个路径必须位于所有 Kubernetes 节点上都已挂载的网络文件系统上。
    • k8s-hostpath-provisioner 接收到 PVC 请求时,它会在 pvDir 指定的路径下为该 PVC 创建一个子目录,用于存储 PVC 的数据。
  2. k8s-hostpath-provisioner 挂载的卷

    • k8s-hostpath-provisioner 的部署配置中,需要挂载网络存储卷,这通常在 deployment.yaml 中定义。
    • 这个挂载卷的路径应该指向网络存储上的某个位置,通常是 pvDir 指定的相同路径或其父目录。
    • 这样配置的目的是让 k8s-hostpath-provisioner 能够访问网络存储,并在该存储上创建和管理 PV。
  3. 二者的关系

    • pvDir 作为 StorageClass 的一部分,定义了存储卷的“逻辑”位置,即在网络存储上应该创建 PV 数据的位置。
    • k8s-hostpath-provisioner 挂载的卷则提供了对这些存储位置的“物理”访问,使得供应器能够操作这些存储资源。
    • k8s-hostpath-provisioner 根据 PVC 请求创建 PV 时,它会在挂载的卷(即网络存储)的 pvDir 路径下创建具体的存储卷。
  4. 工作流程示例

    • 假设网络存储已经挂载在所有节点的 /ceph/pvs 路径上。
    • StorageClass 中配置 pvDir: /ceph/pvs
    • k8s-hostpath-provisioner 的部署配置中也挂载了 /ceph/pvs 路径。
    • 当 PVC 请求到来时,k8s-hostpath-provisioner/ceph/pvs 下为 PVC 创建一个子目录,例如 /ceph/pvs/pvc-1234
    • PVC 绑定到这个新创建的 PV,应用程序就可以通过 PVC 使用这个存储卷了。

通过这种方式,StorageClass 中的 pvDir 参数和 k8s-hostpath-provisioner 挂载的卷协同工作,确保了存储卷的正确创建和管理。这种设计允许集中管理网络存储配置,同时保持了 Kubernetes 存储供应的灵活性和动态性。

文章来自个人专栏
云计算安全
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0