gpt4 book ai didi

Kubernetes mount.nfs : access denied by server while mounting

转载 作者:行者123 更新时间:2023-12-04 18:58:32 29 4
gpt4 key购买 nike

我有一个在外网运行的 kubernetes 集群,并在同一网络的另一台机器上设置了 NFS 服务器。我可以通过 ssh 连接到集群中的任何节点并通过运行 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 开头的 ip 运行.集群上的所有节点和 NFS 服务器都在运行 Ubuntu。 NFS 服务器正在 10.17.10.190 上运行有了这个 /etc/exports :
/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

我的测试 pods 正在使用此配置:
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

最佳答案

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

您可以像@Giorgio 提到的那样 runAsUser 或尝试编辑命名空间的 uid-range 注释并修复一个值(例如:666)。像这样您命名空间中的每个 pod
将以 uid 666 运行。

别忘了chown 666正确您的 NFS 目录。

关于Kubernetes mount.nfs : access denied by server while mounting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45360084/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com