0、环境
rook 集群网络模式是host
- ROOK 1.5.1(已经创建cephfs)
- kubernetes 1.18.9
- calico
1、部署NFS CRD
apiVersion: ceph.rook.io/v1
kind: CephNFS
metadata:
name: my-nfs
namespace: rook-ceph
spec:
rados:
# 存储ganesha数据和配置的pool,这里指定的是cephfs的一个pool
pool: myfs-data0
namespace: ganesha-ns
server:
# 指定 nfs-server 数量
active: 1
# 指定 ganesha-mds部署节点
placement:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: ganesha-mds
operator: In
values:
- enabled
resources:
2、通过ceph dashboard配置NFS-GANESHA
为了在Ceph仪表板中启用NFS-Ganesha exports的管理,我们需要告诉仪表板RADOS池和存储配置对象的名称空间。然后,Ceph仪表板可以通过遵循命名约定来访问它们
dashboard配置如下
# 命令格式
# ceph dashboard set-ganesha-clusters-rados-pool-namespace <pool_name>[/<namespace>]
kubectl -n rook-ceph exec -it $TOOLS_POD -- ceph dashboard set-ganesha-clusters-rados-pool-namespace myfs-data0/ganesha-ns
查看dashboard功能状态
[root ceph]# kubectl -n rook-ceph exec -it $TOOLS_POD -- ceph dashboard feature status
Feature 'rbd': enabled
Feature 'mirroring': enabled
Feature 'iscsi': enabled
Feature 'cephfs': enabled
Feature 'rgw': enabled
Feature 'nfs': enabled
之后,我们就可以在web ui 配置NFS-Ganesha了。
ui 配置如下
3、测试挂载
为了集群外部节点可以使用nfs,所以我的nfs-ganesha是host 网络模式,如果你是集群网络,需要把server的ip做成ingress /nodeport 暴露出去
[root@ceph ~]# yum install -y nfs-utils
[root@ceph ~]# systemctl start rpcbind
[root@ceph ~]# mount -t nfs -o port=2049 192.168.7.166:/cephfs /mnt/rook
[root@ceph ~]# dfh|grep rook
192.168.7.166:/cephfs 1.1T 99G 998G 9% /mnt/rook
参考文档
https://docs.ceph.com/en/latest/mgr/dashboard/#dashboard-nfs-ganesha-management
https://github.com/rook/rook/blob/master/design/ceph/ceph-nfs-ganesha.md