FlexVolume介绍
1. FlexVolume介绍
Flexvolume提供了一种扩展k8s存储插件的方式,用户可以自定义自己的存储插件。类似的功能的实现还有CSI的方式。Flexvolume在k8s 1.8+以上版本提供GA功能版本。
2. 使用方式
在每个node节点安装存储插件二进制,该二进制实现flexvolume的相关接口,默认存储插件的存放路径为/usr/libexec/kubernetes/kubelet-plugins/volume/exec/<vendor~driver>/<driver>。
其中vendor~driver的名字需要和pod中flexVolume.driver的字段名字匹配,该字段名字通过/替换~。
例如:
path:/usr/libexec/kubernetes/kubelet-plugins/volume/exec/foo~cifs/cifs
pod中flexVolume.driver:foo/cifs
3. FlexVolume接口
节点上的存储插件需要实现以下的接口。
3.1. init
<driver executable> init3.2. attach
3.3. detach
3.4. waitforattach
3.5. isattached
3.6. mountdevice
3.7. unmountdevice
3.8. mount
3.9. unmount
3.10. 插件输出
4. 示例
4.1. pod的yaml文件内容
nginx-nfs.yaml
相关参数为flexVolume.driver等。
4.2. 插件脚本
nfs脚本实现了flexvolume的接口。
/usr/libexec/kubernetes/kubelet-plugins/volume/exec/k8s~nfs/nfs。
参考:
https://github.com/kubernetes/community/blob/master/contributors/devel/sig-storage/flexvolume.md
https://github.com/kubernetes/examples/tree/master/staging/volumes/flexvolume
https://github.com/kubernetes/examples/blob/master/staging/volumes/flexvolume/nginx-nfs.yaml
https://github.com/kubernetes/examples/blob/master/staging/volumes/flexvolume/nfs
最后更新于
这有帮助吗?