当 NFS 客户端尝试在共享文件夹上创建文件时,发生不允许的操作,服务器和客户端都在容器中

问题描述

我在谷歌上搜索了很多,发现了一些类似的案例。但是,在我的情况下,它们都不起作用。不知道是不是跟 Mac 有关系。

我会尽量清楚地描述我的问题。

  • 我使用 KIND 运行具有 3 个节点的本地 Kubernetes 集群。我从本地 MacOS /data/k8s
  • 在主节点 /tmp/k8s 中安装了一个
  • 我在主节点上创建了一个 NFS 服务器,导出 /data/k8s
  • 我还在从节点上安装 NFS 作为 NFS 客户端,并将主节点 /data/k8s 挂载到我的从节点本地 /data/k8s

问题来了:

  • 在主节点上一切正常,没问题。
  • 在从节点上,我CANNOT创建了一个普通文件,同时我可以创建一个文件
  • 在从节点上,我CAN修改了在主节点上创建的所有文件
  • 在主节点上创建的任何文件都会在从节点上同步而不会出现问题。

这里有一些信息:

  • 操作系统(主从相同)
NAME="Ubuntu"
VERSION="19.10 (Eoan Ermine)"
ID=ubuntu
ID_LIKE=debian
  • 主节点上的挂载信息(空间最初是从主机 MacOS 挂载的)
root@test2-control-plane:/data/k8s# mount | grep /data
grpcfuse on /data/k8s type fuse.grpcfuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,max_read=1048576)
  • 在主节点上导出设置
/data/k8s/ *(fsid=0,rw,sync,no_root_squash)
  • 主节点的etab信息
*(rw,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,fsid=0,anonuid=65534,anongid=65534,sec=sys,no_all_squash)
  • 主节点的权限信息
root@test2-control-plane:/data/k8s# ls -al
total 24
drwxrwxrwx 7 root root  224 Dec 25 01:50 .
drwxrwxrwx 3 root root 4096 Dec 24 12:33 ..
  • 从节点挂载信息
root@test2-worker:/data/k8s# mount | grep /data
172.18.0.4:/data/k8s on /data/k8s type nfs (rw,vers=3,rsize=262144,wsize=262144,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,mountaddr=172.18.0.4,mountvers=3,mountport=45257,mountproto=udp,local_lock=all,addr=172.18.0.4)
  • 从节点的权限信息
root@test2-worker:/data/k8s# ls -al
total 24
drwxrwxrwx 8 root root  256 Dec 25 02:17 .
drwxrwxrwx 3 root root 4096 Dec 24 13:23 ..
  • 我尝试过的:
    • 我检查过 SELinux
    root@test2-control-plane:/data/k8s# sestatus
    SELinux status:                 disabled
    
    • 我尝试添加 all_squash 并为特定用户添加 anonuidanongid,并且我在主节点和从节点上定义了具有相同 user_id 和 group_id 的用户。然后切换到我从节点上定义的用户
    • 尝试了太多我记不清了。

我知道这可能是一个特定的案例。如果有人能提供帮助,我们将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)