【问题标题】:K8s - an NFS share is only mounted read-only in the podK8s - NFS 共享仅以只读方式挂载在 pod 中
【发布时间】:2021-05-19 02:44:38
【问题描述】:

环境:用于持久存储的外部 NFS 共享,可供所有人访问,R/W,Centos7 VM(NFS 共享和 K8s 集群),安装在所有工作人员上的 NFS 实用程序。

安装在虚拟机上,例如一个 K8s 工作节点,工作正常,共享为 R/W

部署在K8s集群中:PV、PVC、Deployment(Volumes - 引用PVC、VolumeMount) YAML 文件的结构对应于各种说明和帖子,包括网站上的帖子。

pod 启动,共享已挂载。不幸的是,它是只读的。到目前为止,我发现的帖子中的所有建议都不起作用。

知道我还能注意什么,我还能尝试什么吗?

谢谢。托马斯

【问题讨论】:

  • 是客户端挂载RO,还是使用ro选项导出?还是UID不匹配的问题?
  • All the suggestions from the postings I have found about this did not work so far. - 你到底尝试了什么,为什么没有帮助?
  • 用 rw 导出。可以将共享安装在系统(K8s 之外)中,并且可以毫无问题地进行读写。看来,客户端(K8s / 我的 Pod?)将它挂载。

标签: kubernetes mount nfs kubernetes-pod persistent-volumes


【解决方案1】:

深入挖掘后,我找到了问题的原因。显然,NFS 导出的语法非常敏感。再多一个空间可能会有问题。 在 NFS 服务器上,两个导出条目存储在内核表中。第一个 R/O 和第二个 R/W。由于 /etc/exports 中的语法,我不知道这是否是 Centos 错误。

在另一台 Centos 机器上,我能够毫无问题地安装共享(r/w)。但是,在容器(基于 Debian 的映像)中,不是(仅 r/o)。我没有调查这是否是由于 Kubernetes 或 Debian 的行为不同。

更正 /etc/exports 文件并重新启动 NFS 服务器后,内核表中只有一个正确的条目。之后,在 Centos 机器以及 K8s 内基于 Debian 的容器中挂载 R/W 工作。

这里是文件/表格:

私有的 /etc/exports:

/nfsshare 172.16.6.* (rw,sync,no_root_squash,no_all_squash,no_acl)

==> 内核:

/nfsshare 172.16.6.*(ro, ...
/nfsshare *(rw, ...

已更正 /etc/exports(不含空白):

/nfsshare *(rw,sync,no_root_squash,no_all_squash,no_acl)

【讨论】:

    【解决方案2】:

    原则上,使用初始化容器的想法是好的。谢谢你提醒我这一点。

    我试过了。

    不幸的是,它并没有改变基本问题。文件系统由 Kubernetes 以“只读”方式挂载。 init 容器返回以下错误消息(来自日志):

    chmod: /var/opt/dilax/enumeris: 只读文件系统

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-09
      • 2017-02-16
      • 2023-04-09
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      相关资源
      最近更新 更多