Mongodb k8s中的mongo设置未使用持久卷

Mongodb k8s中的mongo设置未使用持久卷,mongodb,docker,kubernetes,minikube,Mongodb,Docker,Kubernetes,Minikube,我正试图在我的minikube集群中装载一个本地文件夹,作为mongo的/data/db。到目前为止没有运气:( 所以,我遵循了一些步骤,它们描述了如何创建一个持久卷、一个持久卷声明、一个服务和一个pod 配置文件是有意义的,但当我最终启动pod时,它会由于错误而重新启动,然后继续运行 如果我连接到MongoDB/pod,mongo运行良好! 但是,它没有使用持久卷。这是我的pv.yaml: kind: PersistentVolume apiVersion: v1 metadata: na

我正试图在我的minikube集群中装载一个本地文件夹,作为mongo的
/data/db
。到目前为止没有运气:(

所以,我遵循了一些步骤,它们描述了如何创建一个持久卷、一个持久卷声明、一个服务和一个pod

配置文件是有意义的,但当我最终启动pod时,它会由于错误而重新启动,然后继续运行

如果我连接到MongoDB/pod,mongo运行良好! 但是,它没有使用持久卷。这是我的pv.yaml:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: mongo-pv
   labels:
     type: local
spec:
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/k8s/mongo"
mongo pod内部是查看
/data/db
中的mongo文件,但在我的本地计算机(
/k8s/mongo
)上,文件夹是空的

下面我还将列出持久卷声明(pvc)和pod/服务yaml

pvc.yaml:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mongo-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
mongo.yaml:

apiVersion: v1
kind: Service
metadata:
  name: mongo
  labels:
    name: mongo
spec:
  clusterIP: None
  ports:
  - port: 27017
    targetPort: 27017
  selector:
    role: mongo
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: mongo
spec:
  serviceName: "mongo"
  replicas: 1
  template:
    metadata:
      labels:
        role: mongo
        environment: test
    spec:
      terminationGracePeriodSeconds: 10
      volumes:
        - name: mongo-pv-storage
          persistentVolumeClaim:
            claimName: mongo-pv-claim
      containers:
        - name: mongo
          image: mongo
          command:
            - mongod
            - "--bind_ip"
            - 0.0.0.0
            - "--smallfiles"
            - "--noprealloc"
          ports:
            - containerPort: 27017
          volumeMounts:
            - name: mongo-pv-storage
              mountPath: /data/db
我也尝试过,而不是使用
persistentVolumeClaim
来完成

volumes:
  - name: mongo-pv-storage
    hostPath:
      path: /k8s/mongo
提供相同的问题,但在创建过程中没有错误

有没有关于问题可能是什么的建议,或者下一步在哪里寻找更多细节

另外,PV和PVC是如何连接的?

一些建议(可能/可能没有帮助)

将存储类名更改为字符串:

storageClassname: "manual"

这是一个非常奇怪的,但它为我工作,确保您的路径/k8s/mongo有正确的权限。
chmod 777/k8s/mongo
一些建议(可能/可能没有帮助)

将存储类名更改为字符串:

storageClassname: "manual"

这是一个非常奇怪的,但它为我工作,确保您的路径/k8s/mongo有正确的权限。
chmod 777/k8s/mongo
请试试这个

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: mongo
  app: mongodb
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: mongo
          image: mongo:3
          ports:
            - containerPort: 27017
          volumeMounts:
            - name: mongo-persistent-volume
              mountPath: /data/db
  volumeClaimTemplates:
  - metadata:
      name: mongo-persistent-volume
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 5Gi
您可以创建全新的PVC并在此处使用它或更改名称。这对我来说很有效。在传递命令时,我在配置mongoDB时也遇到了同样的问题。请删除这些命令,然后再试一次

有关更多详细信息,请查看github,请尝试此

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: mongo
  app: mongodb
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: mongo
          image: mongo:3
          ports:
            - containerPort: 27017
          volumeMounts:
            - name: mongo-persistent-volume
              mountPath: /data/db
  volumeClaimTemplates:
  - metadata:
      name: mongo-persistent-volume
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 5Gi
您可以创建全新的PVC并在此处使用它或更改名称。这对我来说很有效。在传递命令时,我在配置mongoDB时也遇到了同样的问题。请删除这些命令,然后再试一次


有关更多详细信息,请检查github

我可以确认它在k8s
docker For desktop
环境中确实有效。因此,问题与minikube有关。我已使用
hyperkit
vritualbox
驱动程序测试了minikube。在这两种情况下,写入/data/db的文件在本地文件夹(/k8s/mongo)中都不可见

我可以确认它在k8s
docker for desktop
环境中确实有效。因此问题与minikube有关。我已经使用
hyperkit
vritualbox
驱动程序测试了minikube。在这两种情况下,写入/data/db的文件在本地文件夹(/k8s/mongo)中都不可见

你能更新帖子吗?我还在工作。今天我没有时间,所以希望我明天能继续。它仍然不起作用,但我最近的想法是,它可能与Minikubebe有关,但在kubernetes集群上工作正常。你能更新帖子吗?我还在工作吗今天我没有时间,所以希望我明天可以继续。它仍然不起作用,但我最近的想法是,它可能与Minikubebe有关,但在kubernetes群集上,它工作得很好。请解释为什么这个解决方案有效,粘贴代码不是一个很好的答案,正如你所看到的,我提到了“删除命令”因此,我的解决方案是运行mongo db server,而不将命令作为参数传递,并使用PVC with mongoplies请解释此解决方案的工作原理,粘贴代码不是一个好的答案,正如您所看到的,我提到了“删除命令并尝试它。”因此,我的解决方案是运行mongo db server,而不将命令作为参数传递,并使用PVC withmongo