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-untils和rpcbind
# 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:将远程访问的所有用户组都映射为匿名用户组账户