在 Minikube 中挂载本地目录时,当 Pod 使用该文件时会导致“检测到文件系统循环”错误

在 Minikube 中挂载本地目录时,当 Pod 使用该文件时会导致“检测到文件系统循环”错误

我想在 Minikube 中运行 MongoDB,同时将本地目录安装到 pod,以便 MongoDB 可以使用其中的数据。我的数据位于本地 PC 的 ./data 目录中,因此我首先执行了以下操作:

minikube mount ./data:/mnt/mongodata

安装没有问题,我可以使用minikube ssh然后成功在 minikube 中的 /mnt/mongodata 中找到数据ls /mnt/mongodata

接下来我尝试创建持久卷(PV)、持久卷声明(PVC)以及部署和服务,如下所示。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mongo-vol
  labels:
    folder: local
spec:
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/mongodata"

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mongo-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 512Mi

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo2-deployment
  labels:
    app: mongo2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo2
  template:
    metadata:
      labels:
        app: mongo2
    spec:
      volumes:
      - name: mongodata
        persistentVolumeClaim:
          claimName: mongo-pv-claim
      containers:
      - name: mongo2db
        image: mongo:latest
        ports:
        - containerPort: 27017
        volumeMounts:
        - mountPath: "/data/db"
          name: mongodata

---
apiVersion: v1
kind: Service
metadata:
  name: mongo2-service
spec:
  type: LoadBalancer
  selector:
    app: mongo2
  ports:
    - protocol: TCP
      port: 27017
      targetPort: 27017

但是运行之后kubectl apply -f mongo.yaml,mongo2-deployment pod出现错误,当我使用查看日志时kubectl logs deployment/mongo2-deployment,错误是:

find: File system loop detected; '/data/db/diagnostic.data' is part of the same file system loop as '/data/db'.

当我尝试不挂载本地目录或更改挂载路径(例如“/data/db2”)时,pod 运行正常。我猜想在这种情况下 MongoDB 会在 /data/db 目录中生成一个默认数据库,但这样我就无法访问我的数据了。

为什么挂载不成功并导致文件系统循环错误?我猜挂载应该“覆盖”原始 /data/db 目录(如果有的话)。我应该怎么做才能解决这个问题?

相关内容