Kubernetes mount.nfs:挂载时服务器拒绝访问

您所在的位置:网站首页 mount挂载sr0不上 Kubernetes mount.nfs:挂载时服务器拒绝访问

Kubernetes mount.nfs:挂载时服务器拒绝访问

2023-03-24 16:17| 来源: 网络整理| 查看: 265

回答问题

我有一个在网络外运行的 kubernetes 集群,并在同一网络中的另一台机器上设置了 NFS 服务器。我可以通过运行sudo mount -t nfs 10.17.10.190:/export/test /mnt连接到集群中的任何节点并从服务器挂载,但是每当我的测试 pod 尝试使用指向该服务器的 nfs 持久卷时,它都会失败并显示以下消息:

Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 19s 19s 1 default-scheduler Normal Scheduled Successfully assigned nfs-web-58z83 to wal-vm-newt02 19s 3s 6 kubelet, wal-vm-newt02 Warning FailedMount MountVolume.SetUp failed for volume "kubernetes.io/nfs/bad55e9c-7303-11e7-9c2f-005056b40350-test-nfs" (spec.Name: "test-nfs") pod "bad55e9c-7303-11e7-9c2f-005056b40350" (UID: "bad55e9c-7303-11e7-9c2f-005056b40350") with: mount failed: exit status 32 Mounting command: mount Mounting arguments: 10.17.10.190:/exports/test /var/lib/kubelet/pods/bad55e9c-7303-11e7-9c2f-005056b40350/volumes/kubernetes.io~nfs/test-nfs nfs [] Output: mount.nfs: access denied by server while mounting 10.17.10.190:/exports/test

有谁知道我该如何解决这个问题并使它可以从外部 NFS 服务器挂载?

集群的节点在10.17.10.185 - 10.17.10.189上运行,所有的 Pod 都使用以10.0.x.x开头的 ips 运行。集群和 NFS 服务器上的所有节点都在运行 Ubuntu。 NFS 服务器使用这个/etc/exports在10.17.10.190上运行:

/export 10.17.10.185/255.0.0.0(rw,sync,no_subtree_check)

我设置了一个持久卷和持久卷声明,它们都成功地创建了运行kubectl get pv,pvc的输出:

NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE pv/test-nfs 1Mi RWX Retain Bound staging/test-nfs 15m NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE pvc/test-nfs Bound test-nfs 1Mi RWX 15m

它们是这样创建的:

apiVersion: v1 kind: PersistentVolume metadata: name: test-nfs spec: capacity: storage: 1Mi accessModes: - ReadWriteMany nfs: # FIXME: use the right IP server: 10.17.10.190 path: "/exports/test" --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-nfs spec: accessModes: - ReadWriteMany resources: requests: storage: 1Mi

我的测试 pod 正在使用此配置:

apiVersion: v1 kind: ReplicationController metadata: name: nfs-web spec: replicas: 1 selector: role: web-frontend template: metadata: labels: role: web-frontend spec: containers: - name: web image: nginx ports: - name: web containerPort: 80 volumeMounts: # name must match the volume name below - name: test-nfs mountPath: "/usr/share/nginx/html" volumes: - name: test-nfs persistentVolumeClaim: claimName: test-nfs Answers

这可能是因为您的 pod/container 中使用的 uid 在 NFS 服务器上没有足够的权限。

您可以按照@Giorgio 的说明运行AsUser,或者尝试编辑命名空间的uid-range 注释并修复一个值(例如:666)。像这样,您命名空间中的每个 pod 都将使用 uid 666 运行。

不要忘记将chown 666正确设置为您的 NFS 目录。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3