网通社科技快报

阿里云CSI驱动源码解析StatefulSet触发PVC到容器挂载全链路7步实现

在Kubernetes有状态应用部署中,StatefulSet触发PVC创建后,系统通过CSI插件自动完成存储供给与挂载。以阿里云CSI驱动为例,该过程包含7个关键步骤:第一,StatefulSet控制器生成PVC对象;第二,external-disk-provisioner等sidecar监听PVC事件,调用csi-provisioner主容器的CreateVolume接口;第三,csi-provisioner依据StorageClass调用阿里云OpenAPI创建云盘/NAS/OSS资源,并返回Volume ID;第四,sidecar据此创建PV并绑定PVC,若为WaitForFirstConsumer模式则延迟至Pod调度后执行;第五,kube-scheduler选定节点后,external-attacher触发ControllerPublishVolume,将卷挂载至目标ECS实例,并更新VolumeAttachment状态;第六,kubelet调用本地csi-plugin执行NodeStageVolume(如NAS mount至宿主机临时目录)与NodePublishVolume(bind-mount至Pod volume路径);第七,容器运行时(containerd/CRI-O)注入挂载点,业务容器可访问数据。其中,csi-provisioner以Deployment部署于控制面,负责卷生命周期管理;csi-plugin以DaemonSet部署于各节点,处理Node侧操作,二者通过disk.sock/nas.sock/oss.sock三个UDS端点及gRPC通信。对于OSS等对象存储,额外启动oss-fuse Pod提供FUSE文件系统接口。该架构实现控制面与数据面解耦,支持快照、克隆、拓扑感知等高级特性,显著提升存储插件开发效率与运维一致性。