知识卡片
CSI通过sidecar解耦存储驱动与编排系统核心
内容
Kubernetes早期的存储插件是内置的(in-tree),要支持一种新存储就必须把驱动代码提交进Kubernetes主仓库,跟着Kubernetes统一的发布节奏走,存储厂商既要遵守社区规则、又要承担和Kubernetes版本节奏不一致的协调成本,Kubernetes社区也要承担自己并不熟悉的第三方代码的维护和安全风险。CSI把存储驱动完全移出Kubernetes核心代码,改用gRPC协议通信,驱动可以作为独立的Sidecar容器运行在集群里,Kubernetes只维护一份稳定的CSI接口标准,存储厂商只要实现这个接口,就能在任何遵循CSI规范的编排系统间平滑迁移,不再需要向任何特定编排系统的代码仓库提交代码。发散:这是”接口标准化”和”实现进程外化”两件事同时发生的解耦——不仅仅是定义了一套通用API,更关键的是把实现方从”和核心系统编译在一起的插件”变成了”独立部署、独立发布节奏的进程”,这种解耦方式让接口的标准化真正落到了工程可执行的层面,而不只是一份文档约定。
参考来源
《Linux开源存储全栈详解从Ceph到容器存储》第9章《容器存储》