CSI驱动开发?存储的CSI驱动开发?
CSI(Container Storage Interface)是 Kubernetes 的存储插件标准:抽象「卷的创建、挂载、扩容、快照等」,由独立组件(CSI 驱动)实现,与 K8s 解耦。K8s 通过 Volume、PVC/PV、StorageClass 发请求,kubelet 与 external-provisioner/attacher 等侧车调用 CSI 驱动的 gRPC 接口,由驱动与后端存储(云盘、Ceph、NFS 等)交互。
接口:实现 CSI 规定的 Identity、Controller、Node 三类 gRPC 服务。Identity:GetPluginInfo、GetPluginCapabilities 等。Controller:CreateVolume/DeleteVolume、ControllerPublishVolume(挂到节点)等,常由单独进程(与 K8s 控制面同机或集中部署)提供。Node:NodeStageVolume/NodePublishVolume(在节点上挂到 Pod 路径)等,由每节点的 DaemonSet 或 kubelet 调用的进程提供。流程:用户建 PVC → provisioner 调 CreateVolume → 调度到某节点 → attacher 调 ControllerPublish → kubelet 调 NodeStage/NodePublish,最终 Pod 内可见卷。
驱动需幂等(重复调用不报错);考虑拓扑(如云盘只能挂同 AZ 节点);扩容、快照、克隆按能力实现对应 RPC。常用框架有 csi-test、各云厂商与 Ceph 的参考实现。
| 返回模块 | 返回总览 |