external-storage 探索
概述
使用 out-of-tree 形式 添加存储 不同于 in-tree 形式,需要改变 controller-manager 等核心部分
和 CSI 的关系
核心组成
provisioner
用于创建 PV ,指定 voulume 真正的后端存储
controller
包含Provisioner接口和ProvisionController,ProvisionController是一个自定义的Kubernetes 控制器,用于监视PersistentVolumes和PersistentVolumeClaims。实现Provisioner接口,将实现传递给ProvisionController,然后运行控制器,然后负责根据需要调用Provisioner的Provision或Delete。
out-of-tree
树外卷插件包括容器存储接口(CSI)和FlexVolume。它们使存储供应商可以创建自定义存储插件,而无需将其添加到Kubernetes存储库中。
在引入CSI和FlexVolume之前,所有的卷插件(如上面列出的卷类型)都是“树内”的,这意味着它们是用核心Kubernetes二进制文件构建,链接,编译和交付的,并扩展了核心Kubernetes API。这意味着向Kubernetes(卷插件)添加新的存储系统需要将代码检查到核心Kubernetes代码存储库中。
CSI和FlexVolume都允许独立于Kubernetes代码库开发卷插件,并作为扩展在Kubernetes集群上进行部署(安装)。
对于希望创建树外容量插件的存储供应商,请参考此FAQ。
当前还是 in-tree,源码里能看到:https://github.com/kubernetes/kubernetes/tree/master/pkg/volume,支持各种后端存储,csi 是一种理想,还在路上,也是可参与的
参考
- 源码与文档
in-tree 源码 storageclass 官方文档 CSI 设计文档 本地静态存储 provisioner 外部存储 provisioner
- blog 文章
- 原文作者:战神西红柿
- 原文链接:https://tomatoares.github.io/posts/storage/external-storage/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。