当VM执行请求时,NFS服务器拒绝连接

时间:2019-09-02 08:42:04

标签: networking nfs minikube

我想这是一个典型的网络问题,但是我无法弄清楚我在做什么错。

  • 我设置了一个NFS服务器以接受来自任何地方的连接:/test *(rw,sync,no_subtree_check)
  • 我在ufw中允许NFS连接:ufw allow nfs
  • 我检查是否可以在计算机上安装mount -t nfs <server_IP>:/test。可以。

但是,当我尝试在VM(由minikube创建)中运行同一命令时,命令超时。为什么?
在虚拟机中,我检查了以下内容:

  • 我可以ping NFS服务器
  • 我可以卷曲端口2049(我得到err 56,但至少我知道请求已通过防火墙)。

这是我以root用户身份运行的命令列表:

mkdir -p /test
chown nobody:nogroup /test
chmod 777 /test
echo "/test *(rw,sync,no_subtree_check)" >> /etc/exports
exportfs -a
systemctl restart nfs-kernel-server
ufw allow nfs
minikube start
minikube ssh mkdir -p /myTest && sudo mount -t nfs <myIp>:/test /myTest 

1 个答案:

答案 0 :(得分:0)

首先,我们需要将NFS配置为卷的后端,而不是默认主机(minikube目录)。输入以下命令以导出NFS共享:

$ echo "/Users -alldirs -mapall="$(id -u)":"$(id -g)" <minikube-ip>"| sudo tee -a /etc/exports

您需要在minikube-ip处交换您的实际IP地址,您可以通过键入以下命令来进行检查:

$ minikube ip

然后,我们需要定义yaml文件来创建NFS卷。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: test-nfs
spec:
  capacity:
    storage: 8Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: standard
  nfs:
    server: <minikube-ip>
    path: /Users/Shared/Sites/

我们可以看到它已经使用我们之前导出的NFS路径创建了Volume。

$ kubectl get pv -o wide
NAME       CAPACITY  ACCESS MODES  RECLAIM POLICY   STATUS      CLAIM     STORAGECLASS   REASON    AGE
test-nfs   8Gi       RWX           Retain           Available             standard                 7s   

$ kubectl describe pv test-nfs
Name:            test-nfs
Labels:          <none>
Annotations:     <none>
StorageClass:    standard
Status:          Available
Claim:
Reclaim Policy:  Retain
Access Modes:    RWX
Capacity:        8Gi
Message:
Source:
    Type:      NFS (an NFS mount that lasts the lifetime of a pod)
    Server:    <minikube-ip>
    Path:      /Users/Shared/Sites/
    ReadOnly:  false
Events:        <none> 

我鼓励您阅读this article,其中解释了何时应使用NFS。希望对您有帮助。