GlusterFs概述
glusterfs是一个可扩展,分布式文件系统,集成来自多台服务器上的磁盘存储资源到单一全局命名空间,以提供共享文件存储。
GlusterFs特点
- 可以扩展到几PB容量
- 支持处理数千个客户端
- 兼容POSIX接口
- 使用通用硬件,普通服务器即可构建
- 能够使用支持扩展属性的文件系统,例如ext4,XFS
- 支持工业标准的协议,例如NFS,SMB
- 提供很多高级功能,例如副本,配额,跨地域复制,快照以及bitrot检测
- 支持根据不同工作负载进行调优
如果你还不了解GlusterFs,这里推荐一篇很好的入门学习教程:GlusterFs学习教程(写得非常好),看完记得收藏哦!!
heketi概述
heketi是一个提供RESTful API管理gfs卷的框架,能够在kubernetes、openshift、openstack等云平台上实现动态的存储资源供应,支持gfs多集群管理,便于管理员对gfs进行操作,在kubernetes集群中,pod将存储的请求发送至heketi,然后heketi控制gfs集群创建对应的存储卷。 heketi动态在集群内选择bricks构建指定的volumes,以确保副本会分散到集群不同的故障域内。 heketi还支持任意数量的glusterfs集群,以保证接入的云服务器不局限于单个glusterfs集群。
部署heketi+glusterfs
环境:kubeadm安装的最新k8s 1.16.2版本,由1master+2node组成,网络插件选用的是flannel,默认kubeadm安装的k8s,会给master打上污点,本文为了实现gfs集群功能,先手动去掉了污点。
本文的glusterfs卷模式为复制卷模式。 另外,glusterfs在kubernetes集群中需要以特权运行,需要在kube-apiserver中添加–allow-privileged=true参数以开启此功能,默认此版本的kubeadm已开启。
[root@k8s-master-01 ~]# kubectl describe nodes k8s-master-01 |grep Taint
Taints: node-role.kubernetes.io/master:NoSchedule
[root@k8s-master-01 ~]# kubectl taint node k8s-master-01 node-role.kubernetes.io/master-
node/k8s-master-01 untainted
[root@k8s-master-01 ~]# kubectl describe nodes k8s-master-01 |grep Taint
Taints: <none>