nfs客户端的一次处理

为什么要说这个呢,由于节点环境不一致,导致在重建pod时,我们暂且叫该pod为 cxpod,cxpod所在宿主机
出现了问题现象如下:
一、cxpod始终处于创建中 ContainerCreating  
[root@master-web-38 ~]#  kubectl describe pod cxpod
......
mount.nfs: mounting 10.121.53.91:/nfs/res/shfprsc/upload/cfs failed, reason given by server: No such file or directory


我的处理方式是:

1)查看该node机器是否有安装nfs客户端
[root@ht22 calico]# rpm -qa nfs-utils rpcbind
nfs-utils-1.3.0-0.68.el7.2.x86_64
rpcbind-0.2.0-49.el7.x86_64

已安装,查看启动状态。

[root@ht22 calico]# systemctl status nfs.service

[root@ht22 calico]# systemctl status  rpcbind.service

2) 查看nfs服务器端暴露情况(nfs server ip是 10.121.53.91

[root@ht22 calico]# showmount -e 10.121.53.91
Export list for 10.121.53.90:
/nfs/bucket *
/nfs *
/nfs/k8slog/es5 10.121.56.0/24
/nfs/k8slog 10.121.51.0/24,10.121.52.0/24,10.121.56.0/24,10.121.55.0/24
/nfs/aill 10.121.51.0/24,10.121.52.0/24,10.121.56.0/24,10.121.55.0/24
/nfs/res 10.121.51.0/24,10.121.53.0/24,10.121.54.0/24,10.121.55.0/24
/nfs/upload 10.121.51.0/24,10.121.55.0/24
 原来 ht22 ip  10.121.52.12 即10.121.52.* 这个段并没有设置在服务端开放,所以需要设置服务器端开放该段访问。
3)修改nfs server服务器端的配置文件

root@fpNet-nfs-1 bill]# vi /etc/exports
.......
//增加52段

/nfs/res 10.129.52.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)
......

配置说明:

ro:目录只读
rw:目录读写
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
async:将数据先保存在内存缓冲区中,必要时才写入磁盘
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
no_all_squash:与all_squash取反(默认设置)
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)
no_root_squash:与rootsquash取反
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx)
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户

 

4)重启nfs server服务
[root@fpNet-nfs-1 bill]# /etc/init.d/nfs restart

问题得到解决。顺利创建,这里由于是pod 里面直接挂载的目录,我们不用在客户端先挂载某个目录,如果需要可以

采用普遍安全挂载参数即可

mount -t nfs -o nosuid,noexec,node,rw 192.168.10.150:/data/bbs /data/bbs   类似这种。



二、如果你没有安装nfs客户端,请安装nfs客户端

#cat /etc/redhat-release

1)检查系统版本及NFS服务nfs-utils rpcbind有没有安装

# rpm -qa nfs-utils rpcbind

 

2)安NFS服务nfs-untilsrpcbind

# yum install nfs-utils rpcbind -y

3)启动rpcbind服务

#systemctl start rpcbind.service

4)查看rpcbind服务状态

#systemctl status rpcbind.service

5)查看rpc

 

# lsof -i :111

6)查看nfs服务向rpc注册的端口信息
#
rpcinfo -p localhost

 

 

7)把rpcbind另入开机自启动

#systemctl enable rpcbind.service

8)启动NFS服务并查看其状态

 

 

#systemctl start nfs.service
9)查看nfs
#systemctl status nfs.service

 

10)把NFS服务加入开机自启动并查看其状态

#systemctl enable nfs.service

 

11)查看挂载nfs服务器端挂载情况

showmount -e localhost
12) 查看服务器的暴露的网段和目录情况

[root@ht22 calico]# showmount -e 10.121.53.91

Export list for 10.121.53.90:

/nfs/bucket *

/nfs *

/nfs/k8slog/es5 10.121.56.0/24

/nfs/k8slog 10.121.51.0/24,10.121.52.0/24,10.121.56.0/24,10.121.55.0/24

/nfs/aill 10.121.51.0/24,10.121.52.0/24,10.121.56.0/24,10.121.55.0/24

/nfs/res 10.121.51.0/24,10.121.53.0/24,10.121.54.0/24,10.121.55.0/24

/nfs/upload 10.121.51.0/24,10.121.55.0/24

 总结: 这个主要是提示了,k8s 的pod可以挂载nfs目录,挂载可以灵活设置。 主要看我们的需求,需掌握的是
1、pod 出现问题,kubectl describe pod ...  命令还是很不错的查看问题出现原因的方式
2、nfs客户端安装
3、nfs服务器端安装就不写了。 自己可以查资料
我们很多机器上都用到nfs处理存储,比如:备份,配置文件统一修改等。

 

 

 

ro:目录只读

rw:目录读写

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性

async:将数据先保存在内存缓冲区中,必要时才写入磁盘

all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)

no_all_squash:与all_squash取反(默认设置)

root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)

no_root_squash:与rootsquash取反

anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx)

anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户

posted @ 2022-02-18 17:38  jinzi  阅读(231)  评论(0编辑  收藏  举报