NFS是Linux/Unix间文件共享的一种简单有效的方法,也是Kubernetes支持的文件存储方式之一。在这篇文章中我们将会详细介绍如何在CentOS7上进行NFS设定。
由于不同发行版本的Linux或者Unix会略有不同的可能性,为方便起见,本文中NFS服务器和Client均使用CentOS。
机器用途HostnameIPNFS服务器k8s-1192.168.174.131NFS客户端k8s-2192.168.174.132NFS服务器需要安装rpcbind和nfs-utils。
软件版本rpcbindrpcbind-0.2.0-38.el7.x86_64nfs-utilsnfs-utils-1.3.0-0.33.el7_3.x86_64 [root@ku8-1 ~]# rpm -qa |grep rpcbind rpcbind-0.2.0-38.el7.x86_64 [root@ku8-1 ~]# [root@ku8-1 ~]# rpm -qa |grep nfs-utils nfs-utils-1.3.0-0.33.el7_3.x86_64 [root@ku8-1 ~]#如果没有安装,用如下命令安装即可
yum install -y rpcbind nfs-utilsClient端需要安装nfs-utlis,如果没有安装,用如下命令安装即可
yum install -y nfs-utils··· systemctl start rpcbind systemctl status rpcbind ···
权限选项说明
选项说明rwread-write,可读写;roread-only,只读;sync文件同时写入硬盘和内存;async文件暂存于内存,而不是直接写入内存;no_root_squashNFS客户端root用户可具有root权限。root_squashNFS客户端root用户也只是具有nobody或nfsnobody权限all_squashNFS客户端均只是拥有匿名用户权限anonuid匿名用户的UID值。anongid匿名用户的GID值。使用exportfs命令使得修改后的exports文件起效,使用exportfs不用重启nfs服务。
步骤执行命令Step 1exportfsStep 2showmount -e localhost因为权限是ro,只读权限,所以touch命令不可以正常执行,执行的时候提示“Read-only file system”。
[root@ku8-3 ~]# showmount -e 192.168.174.131 Export list for 192.168.174.131: /tmp/serverdir 192.168.174.133,192.168.174.132 [root@ku8-3 ~]# [root@ku8-3 ~]# ip addr |grep 192 inet 192.168.174.133/24 brd 192.168.174.255 scope global ens33 [root@ku8-3 ~]# [root@ku8-3 ~]# mount -t nfs 192.168.174.131:/tmp/serverdir /tmp/client2 [root@ku8-3 ~]# cd /tmp/client2 [root@ku8-3 client2]# ls helloworld [root@ku8-3 client2]# cat helloworld hello [root@ku8-3 client2]# touch ttt touch: cannot touch ‘ttt’: Read-only file system [root@ku8-3 client2]#因为权限是rw,所以touch命令也可以正常执行。
[root@ku8-2 ~]# mkdir -p /tmp/client [root@ku8-2 ~]# mount -t nfs 192.168.174.131:/tmp/serverdir /tmp/client [root@ku8-2 ~]# cd /tmp/client/ [root@ku8-2 client]# df . Filesystem 1K-blocks Used Available Use% Mounted on 192.168.174.131:/tmp/serverdir 17811456 2549888 15261568 15% /tmp/client [root@ku8-2 client]# ls helloworld [root@ku8-2 client]# cat helloworld hello [root@ku8-2 client]# touch ttt [root@ku8-2 client]# ls helloworld ttt [root@ku8-2 client]#Server端确认
[root@ku8-1 ~]# cd /tmp/serverdir [root@ku8-1 serverdir]# ls helloworld ttt [root@ku8-1 serverdir]#另外一个Client端确认
[root@ku8-3 client2]# pwd /tmp/client2 [root@ku8-3 client2]# ls helloworld ttt [root@ku8-3 client2]# 淼叔 认证博客专家 神经网络 TensorFlow NLP 资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过十年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累,著有企业级DevOps技术与工具实战。