由于工作中星智链工业互联网门户相关项目部署在k8s,由rancher管理。涉及到图片上传、CMS模板上传、生成的静态文件持久化,因此需要挂载nfs。
此处记录一下nfs服务搭建,以及rancher相关操作记录。
问题过程
- 在为后端服务wisdom-server配置数据卷的时候,发现有一个可用的存储类,在该类上创建PV、PVC,挂载,结果容器重启是总是显示一个权限报错问题:
- 百度,google,发现以下资料
- https://blog.csdn.net/huaying927/article/details/89599753
- https://lhw-tyut.github.io/2019/01/25/NFS-%E5%90%8C%E6%97%B6%E8%BF%9E%E6%8E%A5%E4%B8%A4%E4%B8%AA%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%97%B6%E6%8A%A5%E9%94%99/
因此将按照资料登录了已有的nfs服务器进行更改,错误依旧,并且提示了一个新的错误,需要在挂载命令中追加-o nolock
,发现,可以在PV中配置此挂载选项:
- 错误依旧。考虑到这个nfs服务已经有较多项目在用,为了防止折腾它影响别的工程,于是考虑自己搭建一个nfs服务,保证可控。正好采用之前部署测试的机器192.168.5.52(现在已经部署到k8s,此机器只剩下测试库).
自行搭建nfs服务
安装rpcbind和nfs
yum -y install nfs-utils
安装nf-utils会自动安装nfs的依赖rpcbind,因此无需单独再安装rpcbind
依次启动rpcbind和nfs
systemctl start rpcbind
systemctl start nfs
查看启动状态
systemctl status rpcbind
systemctl status nfs
创建共享目录
mkdir /nfs
修改nfs配置文件 /etc/exports
末尾追加: /nfs ${ip}/${port}(rw,sync)
因为是内网测试环境,因此直接配置的是:
/nfs *(rw,sync,no_root_squash)
root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份。
no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!
all_squash:登入 NFS 主机使用分享目录的使用者,所有用户均被压缩成为匿名使用者,即已nobody用户的身份登录。
anonuid和anongid:明确指定匿名使用者使用指定的id值用户的权限,访问分享的目录。
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置)。
insecure:允许客户端从大于1024的tcp/ip端口连接服务器。
依次重启rpcbind和nfs
systemctl restart rpcbind
systemctl restart nfs
rancher应用新的nfs服务
启动rancher应用商店配置的nfs应用:nfs-client-provisioner
重点配置其中的
- nfs.path=nfs服务目录
- nfs.server=nfs服务器ip地址
- storageClass.name=这个是设置的存储类名
- 命名空间nfs-client-provisioner-5-52是创建的新命名空间,对应工作负载中一个新的服务:
创建PV和PVC
在服务中挂载创建好的PVC
升级服务,在数据卷中,添加卷->使用现有PVC,PVC选择刚创建好的nfs-data, 容器路径填写需要持久化的容器目录。
保存即可。
参考
https://blog.csdn.net/demo_deng/article/details/9568927