通过 OpenShift 3.11 PersistentVolume 安装 NFS 卷:mount.nfs:安装失败,服务器给出的原因:没有这样的文件或目录
Mounting a NFS volume by a OpenShift 3.11 PersistentVolume: mount.nfs: mounting failed, reason given by server: No such file or directory
在我们的 OpenShift 3.11 集群中,我们尝试通过 PersistentVolume 和先前在外部 NFS 存储(Isilon 存储)上创建的 NFS 卷来使用 NFS。
我们在 Kubernetes/OpenShift 层上成功创建并应用了 PersistentVolume 和 PersistentVolumeClaim。 PVC 正确绑定了 PV,但是在检查 Deployment 事件时,我们在挂载 NFS 阶段遇到错误。
持久卷:
apiVersion: v1
kind: PersistentVolume
metadata:
name: tool1pv
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
nfs:
path: /tool1shareenv1
server: tommytheserver.companydomain.priv
persistentVolumeReclaimPolicy: Retain
claimRef:
name: tool1claimenv1
namespace: ocpnamespace1
持久卷声明:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: tool1claimenv1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
volumeName: tool1pvenv1
检查开发事件时,我们看到“没有这样的文件”:
MountVolume.SetUp failed for volume "tool1pvenv1" : mount failed:
exit status 32 Mounting command: systemd-run Mounting arguments: --description=Kubernetes transient mount for /var/lib/origin/openshift.local.volumes/pods/f1cb1291-fe12-01ea-bb92-0050123aa39be/volumes/kubernetes.io~nfs/tool1pvenv1 --scope -- mount -t nfs tommytheserver.companydomain.priv:/tool1shareenv1
/var/lib/origin/openshift.local.volumes/pods/f1cb9191-fe73-11ea-bb92-005056ba12be/volumes/kubernetes.io~nfs/tool1pvenv1d Output: Running scope as unit run-74039.scope. **mount.nfs: mounting tommytheserver.companydomain.priv:/tool1env1 failed, reason given by server: No such file or directory**
我们调查了 server
和 path
字段并尝试了不同的变体,例如:
持久卷版本 2:
apiVersion: v1
kind: PersistentVolume
metadata:
name: tool1pv
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
nfs:
path: /tool1shareenv1
server: tommytheserver.companydomain.priv/tool1shareenv1
persistentVolumeReclaimPolicy: Retain
claimRef:
name: tool1claimenv1
namespace: ocpnamespace1
但我们仍然面临同样的 No such file
错误。
我们如何解决它?
通常要解决这样的问题我会...
- 仔细检查您的共享路径是否确实存在
- 获取您的 pod 运行 所在节点的 IP 地址并通过 ssh 连接到它。你可以这样获取IP:
kubectl get pod <podname> -o wide -n namespace
然后我会确保我可以连接到存在共享的 nfs 服务器:
telnet <nfs server> port
- 接下来我会 运行
dmesg
查看安装相关的错误
- 我会尝试使用您的错误所显示的相同参数自己安装卷。即-
mount -t nfs tommytheserver.companydomain.priv:/tool1shareenv1
如果没有看到这些故障排除步骤的结果,很难提供具体的答案。但是,这就是我会采取的方法。
在我们的 OpenShift 3.11 集群中,我们尝试通过 PersistentVolume 和先前在外部 NFS 存储(Isilon 存储)上创建的 NFS 卷来使用 NFS。 我们在 Kubernetes/OpenShift 层上成功创建并应用了 PersistentVolume 和 PersistentVolumeClaim。 PVC 正确绑定了 PV,但是在检查 Deployment 事件时,我们在挂载 NFS 阶段遇到错误。
持久卷:
apiVersion: v1
kind: PersistentVolume
metadata:
name: tool1pv
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
nfs:
path: /tool1shareenv1
server: tommytheserver.companydomain.priv
persistentVolumeReclaimPolicy: Retain
claimRef:
name: tool1claimenv1
namespace: ocpnamespace1
持久卷声明:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: tool1claimenv1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
volumeName: tool1pvenv1
检查开发事件时,我们看到“没有这样的文件”:
MountVolume.SetUp failed for volume "tool1pvenv1" : mount failed:
exit status 32 Mounting command: systemd-run Mounting arguments: --description=Kubernetes transient mount for /var/lib/origin/openshift.local.volumes/pods/f1cb1291-fe12-01ea-bb92-0050123aa39be/volumes/kubernetes.io~nfs/tool1pvenv1 --scope -- mount -t nfs tommytheserver.companydomain.priv:/tool1shareenv1
/var/lib/origin/openshift.local.volumes/pods/f1cb9191-fe73-11ea-bb92-005056ba12be/volumes/kubernetes.io~nfs/tool1pvenv1d Output: Running scope as unit run-74039.scope. **mount.nfs: mounting tommytheserver.companydomain.priv:/tool1env1 failed, reason given by server: No such file or directory**
我们调查了 server
和 path
字段并尝试了不同的变体,例如:
持久卷版本 2:
apiVersion: v1
kind: PersistentVolume
metadata:
name: tool1pv
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
nfs:
path: /tool1shareenv1
server: tommytheserver.companydomain.priv/tool1shareenv1
persistentVolumeReclaimPolicy: Retain
claimRef:
name: tool1claimenv1
namespace: ocpnamespace1
但我们仍然面临同样的 No such file
错误。
我们如何解决它?
通常要解决这样的问题我会...
- 仔细检查您的共享路径是否确实存在
- 获取您的 pod 运行 所在节点的 IP 地址并通过 ssh 连接到它。你可以这样获取IP:
kubectl get pod <podname> -o wide -n namespace
然后我会确保我可以连接到存在共享的 nfs 服务器:
telnet <nfs server> port
- 接下来我会 运行
dmesg
查看安装相关的错误 - 我会尝试使用您的错误所显示的相同参数自己安装卷。即-
mount -t nfs tommytheserver.companydomain.priv:/tool1shareenv1
如果没有看到这些故障排除步骤的结果,很难提供具体的答案。但是,这就是我会采取的方法。