卷“ mongo-two”的MountVolume.SetUp失败:lstat / var / lib / mongo:没有这样的文件或目录

时间:2018-12-06 09:36:00

标签: kubernetes persistent-volumes

我正在尝试使mongo-replicaset图表正常工作。

Kubelet在部署mongo-replicaset图表时报告此错误:

MountVolume.SetUp failed for volume "mongo-two": lstat /mongo/data: no such file or directory

在每个节点上,/ mongo / data文件夹存在,使我发疯。注意:在节点上,lstat命令不存在,但是我怀疑kubelet容器要带它。 enter image description here

我有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头盔图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
...

在现有目录上仍然没有“这样的目录”。 什么不对如果需要,我可以提供其他数据。

谢谢

2 个答案:

答案 0 :(得分:3)

问题来自容器化的kubelet(由于安装了Rancher)

我将体积定义添加到kubelet容器中,没关系。

对于那些对在Rancher-Kubernetes安装中创建持久本地卷感兴趣的人,只需将其添加到群集yaml中,以便kubelet可以挂载您的卷:

services:
  kubelet:
    extra_binds:
       - /path_to_mount:/path_to_mount:rshared

别忘了共享两个点。

答案 1 :(得分:0)

在状态集中,您必须具有带有subPath字段的卷预配器。如果您从statefulset yaml文件中删除该subPath字段,则不会遇到此错误。

问题在于,如果部署/状态集中存在子路径字段,即使该字段为空,主机路径卷配置程序中也会存在一个错误,该错误会出现“ lstat:无此类文件或目录”错误。此错误不会让statefulset出现,而是进入containerCreatingConfigErr(在kubeadm上与我一起发生)

有关更多信息,您可以访问此链接

https://github.com/kubernetes/minikube/issues/2256