1

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

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
...

现有目录上仍然有“没有这样的目录”。有什么不正确的?如果需要,我可以提供额外的数据。

谢谢

4

2 回答 2

4

问题来自容器化的 kubelet(因为安装了 Rancher)

我在 kubelet 容器中添加了一个卷定义,就可以了。

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

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

不要忘记两个点 rshared。

于 2018-12-07T17:37:52.873 回答
0

在您的 statefulset 中,您必须拥有带subPath字段的卷配置器。如果您subPath从 statefulset yaml 文件中删除该字段,您将不会遇到此错误。

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

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

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

于 2018-12-06T09:54:28.347 回答