【nfs搭建、k8s、StroageClass动态创建PV】K8S通过StroageClass完成动态的PV创建

StorageClass设置默认存储后端及动态创建存储

 

1.检查操作系统的环境

 

[linguang@backup ~]$ cat /etc/redhat-release

CentOS release 6.10 (Final)

[linguang@backup ~]$ uname -r

2.6.32-754.el6.x86_64      显示操作系统发行版本

[linguang@backup ~]$ uname -m

x86_64                 显示机器(硬件)类型

 

2、NFS服务端需要安装的软件包

 

nfs-utils:nfs服务的主程序,包括rpc.nfsd、rpc.mountd两个daemons和相关的文档说明及执行命令文件等

rpcbind:centos6下面的rpc主程序(centos5下的是portmap)

安装相应的软件包及检查

安装:

[root@nfs01 ~]# yum install nfs-utils rpcbind -y

检查:

[root@nfs01 ~]# rpm -qa nfs-utils rpcbind

rpcbind-0.2.0-13.el6_9.1.x86_64

nfs-utils-1.2.3-75.el6_9.x86_64

注意:在安装完该软件包后会自动创建nfsnobody用户

[root@nfs01 ~]# id nfsnobody

uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)

3、 启动NFS相关的服务

【特别注意上面的启动顺序】必须先启动rpcbind服务之后,才能启动nfs服务

启动rpcbind服务并进行检查

启动rpcbind:

检查:

###############################################

[root@nfs01 ~]# /etc/init.d/rpcbind status

rpcbind (pid 2309) is running…

或者执行下面命令(效果等同  表示rpcbind 服务已经启动)

root@master-01 ~]# /usr/sbin/rpcbind status

rpcbind: another rpcbind is already running. Aborting

操作有些资料可能会要求启动  service portmap start 服务,(百度得知原来在Fedora8中间portmap改名了,换了个马甲。)

##############################################

如果上述#########之间这段命令执行不了,原因是版本问题,执行下面的操作即可:

[root@master-01 ~]# service rpcbind restart
Redirecting to /bin/systemctl restart rpcbind.service

发现提示我们到这个目录去启动:执行下面的命令即可启动

/bin/systemctl restart rpcbind.service

 

启动NFS服务,和上述提示一样 要求在/etc/systemctl 目录下执行

[root@master-01 ~]# /bin/systemctl start nfs.service

查看状态,发现NFS   服务已经启动

[root@master-01 ~]# /bin/systemctl status nfs.service

查看rpc的端口:

[root@nfs01 ~]# netstat -lntup |grep rpc

如果没有netstat命令 执行下面命令

yum install net-tools -y  来安装net工具

查看端口映射情况:

[root@nfs01 ~]# rpcinfo -p localhost

注意:在未启动nfs服务时,不能看到nfs端口的映射情况

原因:nfs可以视为一个rpc程序,在启动任何一个rpc程序之前,需要做好端口和功能的映射工作,这个映射工作就是由rpcbind服务来完成的,因此在提供nfs服务之前,必须要先启动rpcbind服务

检查nfs和rpc进程

[root@nfs01 ~]# ps -ef |egrep “rpc|nfs”

 

4、将相关的服务添加到开机自启动中

推荐

加入:

[root@nfs01 ~]# echo “/etc/init.d/rpcbind start” >>/etc/rc.local

[root@nfs01 ~]# echo “/etc/init.d/nfs start” >>/etc/rc.local

查看:

[root@nfs01 ~]# tail -2 /etc/rc.local

/etc/init.d/rpcbind start

/etc/init.d/nfs start

如图:

【注意】

在实际的生产环境中用方法2,因为可以方便运维人员的管理

5、配置nfs服务的配置文件/etc/exports

默认情况下该配置文件是空的:

[root@nfs01 ~]# ll -h /etc/exports

-rw-r–r–. 1 root root 0 Jan 12 2010 /etc/exports

[root@nfs01 ~]# vim /etc/exports

查看:

[root@nfs01 ~]# cat /etc/exports

#share /data by oldboy for bingbing at 2018-3-12

/data 172.16.1.0/24(rw,sync)

上面这段是重中之重

6、创建共享目录(这个目录自定义,需要和后续包括上面配置中的目录一致就行,我后面的操作可能用的是/nfsdata,都是一个意思。名称自定义,取一个你认为好的名字就行)

[root@nfs01 ~]# mkdir /data -p

[root@nfs01 ~]# ll -d /data/

drwxr-xr-x. 2 root root 4096 Nov 19 10:45 /data/

7、更改共享目录的权限

[root@nfs01 ~]# chown -R nfsnobody.nfsnobody /data

[root@nfs01 ~]# ll -d /data

drwxr-xr-x 2 nfsnobody nfsnobody 4096 Mar 12 19:27 /data

8、重新加载NFS服务

[root@master-01 nfsdata]# /bin/systemctl reload nfs.service
[root@master-01 nfsdata]# 

 修改完/etc/exports配置后,需要重新加载NFS服务

 9、 检查有权限挂载的服务器是否能够挂载

【方法1】利用showmount来进行检查

[root@nfs01 ~]# showmount -e 172.16.1.31

Export list for 172.16.1.31:

/data 172.16.1.0/24

或者

[root@nfs01 ~]# showmount -e localhost

Export list for localhost:

/data 172.16.1.0/24

【注意】

 出现上面信息是,说明服务器可以挂载

 测试的IP地址为NFS服务器的IP地址

 

【方法2】可以在把NFS服务器当做客户端来进行挂载测试

[root@master ~]# mount -t nfs 10.10.36.112:/nfsdata /mnt
mount.nfs: access denied by server while mounting 10.10.36.112:/nfsdata

此时发现上述错误:

挂载失败原因分析:

解决方案:

第一步:查看最近挂载的日志  分析发现:

cat /var/log/messages | grep mount

Apr 8 09:51:54 master-01 rpc.mountd[26157]: Version 1.3.0 starting
Apr 8 09:53:45 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 09:55:47 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 09:57:49 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 09:59:51 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:01:53 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:03:56 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:05:58 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:08:00 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:10:02 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:12:04 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:14:06 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:16:08 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:18:11 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:20:13 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:22:15 master-01 rpc.mountd[26157]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:24:12 master-01 rpc.mountd[26157]: Caught signal 15, un-registering and exiting.
Apr 8 10:24:12 master-01 rpc.mountd[29833]: Version 1.3.0 starting
Apr 8 10:24:17 master-01 rpc.mountd[29833]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:26:19 master-01 rpc.mountd[29833]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:28:21 master-01 rpc.mountd[29833]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:28:51 master-01 rpc.mountd[29833]: refused mount request from 10.10.36.112 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:29:28 master-01 rpc.mountd[29833]: refused mount request from 10.10.27.87 for /nfsdata (/nfsdata): unmatched host
Apr 8 10:30:23 master-01 rpc.mountd[29833]: refused mount request from 10.10.27.90 for /nfsdata (/nfsdata): unmatched host
 

上述发现大多数都是unmatched host :

原因:主机不可达  那么问题肯定出在、 /etc/exports  配置  将ip直接改为* 或者对应的IP即可

改完后 一定记【上述操作属于危险操作,生产环境还是指定IP为好】

得重新reload一下nfs服务

此时我们再客户端机器执行挂载命令:

mount -t nfs 10.10.36.112:/nfsdata /mnt

[root@nfs01 ~]# umount /mnt 测试完后取消挂载

[root@nfs01 ~]# df -h

 

 

10、NFS客户端的配置

 检查操作系统的环境

[root@ client1 ~]# cat /etc/redhat-release

CentOS release 6.9 (Final)

[root@ client1 ~]# uname -r

2.6.32-696.el6.x86_64

[root@ client1 ~]# uname -m

x86_64

11、安装客户端软件rpcbind和nfs-utils

安装:

[root@client1 ~]# yum install nfs-utils rpcbind -y

检查:

[root@ client1 ~]# rpm -qa nfs-utils rpcbind

rpcbind-0.2.0-13.el6_9.1.x86_64

nfs-utils-1.2.3-75.el6_9.x86_64

【注意】

安装nfs-utils软件的目的是为了使用showmount等功能,所以客户端最好也装上,但是不启动NFS服务

12、 启动RPC服务并进行查看

启动:

[root@client1 ~]# /etc/init.d/rpcbind start

Starting rpcbind: [ OK ]

检查:

[root@ client1 ~]# /etc/init.d/rpcbind status

rpcbind (pid 2370) is running…

13、检查能否访问服务端

【方法1】

[root@ client1 ~]# showmount -e 172.16.1.31 此ip地址为服务器端的ip地址

Export list for 172.16.1.31:

/data 172.16.1.0/24

出现上面的情况说明可以访问服务端

【方法2】

[root@ client1 ~]# telnet 172.16.1.31 111                       #111为rpc服务的端口

Trying 172.16.1.31…

Connected to 172.16.1.31.

Escape character is ‘^]’.

出现上面的情况说明可以访问服务端

14、 挂载NFS共享目录

挂载:

[root@ client1 ~]# mount -t nfs 172.16.1.31:/data /mnt

查看:

[root@ client1 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 8.8G 1.5G 6.9G 18% /

tmpfs 491M 0 491M 0% /dev/shm

/dev/sda1 190M 35M 146M 19% /boot

172.16.1.31:/data 8.8G 1.5G 6.9G 18% /mnt

查看:

[root@ client1 ~]# mount

/dev/sda3 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

172.16.1.31:/data on /mnt type nfs (rw,vers=4,addr=172.16.1.31,clientaddr=172.16.1.8)

15、测试读写数据

在/mnt目录下创建测试文件

[root@ client1 ~]# cd /mnt/

[root@ client1 mnt]# touch test.txt

[root@ client1 mnt]# ls

test.txt

16、在NFS服务端/data目录下进行查看

[root@nfs01 ~]# cd /data

[root@nfs01 data]# ls

test.txt

至此NFS客户端挂载成功

17、将挂载命令加入开机自启动

[root@client1 ~]# echo “mount -t nfs 172.16.1.31:/data /mnt” >>/etc/rc.local

[root@client1 ~]# tail -1 /etc/rc.local

mount -t nfs 172.16.1.31:/data /mnt

—————————————————————————————————————————————

NFS共享挂载的验证场景:

 为容器挂载共享存储卷:

即使容器在不通的主机之间漂移,容器挂载的存储卷始终指向NFS存储卷服务,在启动节点上同样从NFS中进行数据恢复:

涉及几个概念一定要清楚:

    PVC 、 PV、  NFS、nfs-client、StoageClass

      简单理解可以认为:这段内容帮助我们理解上面的概念

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月7日
下一篇 2020年3月7日

相关推荐