作者信息:https://home.cnblogs.com/u/huangjiabobk

在K8S中,CSI模型有哪些?

在Kubernetes(K8s)中,Container Storage Interface(CSI)模型是用来集成外部存储系统的标准化方法。CSI模型的主要组成部分包括:

  1. CSI Driver(驱动程序)

    • CSI Driver 是由存储提供商编写的,它实现了 CSI 规范中定义的 API 接口。每个存储提供商都需要为其产品提供一个或多个 CSI Drivers,以便与 Kubernetes 集群进行交互。
    • CSI Driver 包括一个主插件(Controller Service)和一个或多个节点插件(Node Service)。
  2. Controller Service(控制器服务)

    • 控制器服务通常运行在一个或多个 Kubernetes 控制面节点上,负责执行与存储系统交互的操作,如创建、删除持久卷,以及执行快照等。
    • 控制器服务通过 gRPC 接口与 Kubernetes API 服务器通信。
  3. Node Service(节点服务)

    • 节点服务运行在每个 Kubernetes 工作节点上,负责执行与存储系统相关的本地操作,如挂载和卸载卷。
    • 节点服务同样通过 gRPC 接口与 Kubernetes 节点上的 kubelet 组件通信。
  4. CSI 插件注册

    • 在 Kubernetes 中注册 CSI 插件涉及到将 CSI Driver 注册到集群中。通常,这涉及部署一个或多个 DaemonSet 或者 StatefulSet 来确保每个节点上都有必要的 CSI 组件运行。
    • 注册过程也可能包括配置 RBAC 权限,以确保 CSI 组件可以访问必要的 Kubernetes API。
  5. Storage Class(存储类)

    • 存储类定义了如何为 PersistentVolumeClaims (PVC) 创建 PersistentVolumes (PV)。CSI Driver 可以通过存储类来指定其 provisioner 名称,从而让 Kubernetes 知道如何使用特定的 CSI Driver 来动态配置存储。
    • 存储类还可以包含特定于存储系统的参数,比如性能级别或者复制策略等。
  6. Pod 生命周期中的 CSI 卷管理

    • 在 Pod 的生命周期中,CSI 卷的管理涉及几个步骤:
      • Provision/Delete(创盘/删盘):根据 PVC 请求创建新的存储卷或在 PVC 删除时销毁存储卷。
      • Attach/Detach(挂接/摘除):将存储卷附加到节点上或从节点上分离。
      • Mount/Unmount(挂载/卸载):将存储卷挂载到 Pod 的文件系统中或将存储卷卸载。

综上所述,通过这些组件和流程,CSI 模型为 Kubernetes 提供了一个统一的方法来处理各种存储系统,从而增加了存储解决方案的灵活性和可移植性。此外,CSI 模型还帮助解耦了 Kubernetes 与存储系统的实现细节,使得存储提供商可以更轻松地更新和维护他们的解决方案,而无需更改 Kubernetes 的核心代码。

posted @ 2024-10-15 13:13  黄嘉波  阅读(14)  评论(0编辑  收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波