MountVolume.SetUp 卷 "mongo-two" 失败:lstat /var/lib/mongo:没有那个文件或目录
MountVolume.SetUp failed for volume "mongo-two": lstat /var/lib/mongo: no such file or directory
我正在尝试让 mongo-replicaset chart 正常工作。
Kubelet 在 mongo-replicaset 图表部署时报告此错误:
MountVolume.SetUp failed for volume "mongo-two": lstat /mongo/data: no such file or directory
在每个节点上,/mongo/data 文件夹 存在 ,快把我逼疯了。注意:在节点上,lstat 命令不存在,但我怀疑 kubelet 容器会带来它。?
我有 3 个持久卷:
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongo-[one/two/three]
spec:
capacity:
storage: 40Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /mongo/data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- [one/two/three]
StatefulSet yaml: (mongo-replicaset helm chart 3.8.0)
...
volumeMounts:
- mountPath: /data/db
name: datadir
...
volumeClaimTemplates:
- metadata:
creationTimestamp: null
name: datadir
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 40Gi
...
现有目录中仍有 "no such directory"..
哪里不对?如果需要,我可以提供额外的数据。
谢谢
在您的有状态集中,您必须拥有带 subPath
字段的卷供应器。如果您从 statefulset yaml 文件中删除该 subPath
字段,您将不会遇到此错误。
问题是主机路径卷供应器中存在错误,如果 deployment/statefulset 中存在子路径字段,即使该字段为空,也会遇到 "lstat: no such file or directory" 错误。这个错误不会让 statefulset 出现,它们会进入 containerCreatingConfigErr(我在 kubeadm 上遇到过)
有关更多信息,您可以访问此 link
问题来自容器化的 kubelet(因为安装了 Rancher)
我在 kubelet 容器中添加了一个卷定义,没问题。
对于那些对在 Rancher - Kubernetes 安装中创建持久本地卷感兴趣的人,只需将其添加到您的集群 yaml 中,以便 kubelet 可以挂载您的卷:
services:
kubelet:
extra_binds:
- /path_to_mount:/path_to_mount:rshared
不要忘记共享的两个点。
我正在尝试让 mongo-replicaset chart 正常工作。
Kubelet 在 mongo-replicaset 图表部署时报告此错误:
MountVolume.SetUp failed for volume "mongo-two": lstat /mongo/data: no such file or directory
在每个节点上,/mongo/data 文件夹 存在 ,快把我逼疯了。注意:在节点上,lstat 命令不存在,但我怀疑 kubelet 容器会带来它。?
我有 3 个持久卷:
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongo-[one/two/three]
spec:
capacity:
storage: 40Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /mongo/data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- [one/two/three]
StatefulSet yaml: (mongo-replicaset helm chart 3.8.0)
...
volumeMounts:
- mountPath: /data/db
name: datadir
...
volumeClaimTemplates:
- metadata:
creationTimestamp: null
name: datadir
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 40Gi
...
现有目录中仍有 "no such directory".. 哪里不对?如果需要,我可以提供额外的数据。
谢谢
在您的有状态集中,您必须拥有带 subPath
字段的卷供应器。如果您从 statefulset yaml 文件中删除该 subPath
字段,您将不会遇到此错误。
问题是主机路径卷供应器中存在错误,如果 deployment/statefulset 中存在子路径字段,即使该字段为空,也会遇到 "lstat: no such file or directory" 错误。这个错误不会让 statefulset 出现,它们会进入 containerCreatingConfigErr(我在 kubeadm 上遇到过)
有关更多信息,您可以访问此 link
问题来自容器化的 kubelet(因为安装了 Rancher)
我在 kubelet 容器中添加了一个卷定义,没问题。
对于那些对在 Rancher - Kubernetes 安装中创建持久本地卷感兴趣的人,只需将其添加到您的集群 yaml 中,以便 kubelet 可以挂载您的卷:
services:
kubelet:
extra_binds:
- /path_to_mount:/path_to_mount:rshared
不要忘记共享的两个点。