【问题标题】:Kubernetes: Mongodb with peristent storageKubernetes:具有持久存储的 Mongodb
【发布时间】:2021-04-22 07:34:33
【问题描述】:

我正在尝试在 minikube 实例上部署 MongoDB pod。
我已经在 minikube 机器上挂载了一个本地目录,我希望 MongoDB 在这个目录中写入数据。

Minikube 使用这个命令行启动:

minikube start --mount --mount-string=/home/minikube:/data/host

我的mongo-deploy.yaml 如下所示

apiVersion: apps/v1
kind: Deployment
metadata: 
  name: mongodb-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      containers:
        - name: mongodb
          image: mongo
          volumeMounts:
            - name: mongodb-data
              mountPath: /data/db
      volumes:
        - name: mongodb-data
          hostPath:
            path: /data/host/mongo
---
apiVersion: v1
kind: Service
metadata:
  name: mongodb-srv
spec:
  selector:
    app: mongodb
  ports:
    - name: mongodb
      protocol: TCP
      port: 27017
      targetPort: 27017

问题是当 pod 启动时,我得到了这个错误

{"log":"{\"t\":{\"$date\":\"2021-01-17T23:27:54.524+00:00\"},\"s\":\"E\",  \"c\":\"STORAGE\",  \"id\":20557,   \"ctx\":\"initandlisten\",\"msg\":\"DBException in initAndListen, terminating\",\"attr\":{\"error\":\"IllegalOperation: Attempted to create a lock file on a read-only directory: /data/db\"}}\n","stream":"stdout","time":"2021-01-17T23:27:54.524391471Z"}

我很确定这完全与文件夹权限有关。 我尝试在本地文件夹上设置chmod 777,但它不起作用。

将 minikube 中的数据持久保存在本地机器上的正确方法是什么?

【问题讨论】:

  • 能否将数据文件夹的所有权更改为 mongodb。 # chown -R mongodb.mongodb /data/db 或者可以检查 mongodb 用户的 uid 并在 volumeMounts: 行上方的 yaml 文件 command: ["sh", "-c", "chown -R UID:GID /data/db"] 中传递以下命令。
  • 您的主机操作系统是什么。你的 minikube 驱动是什么?
  • 我的主机操作系统是 Ubuntu 18.04,我的 minikube 驱动程序是 Virtualbox

标签: mongodb kubernetes kubernetes-pod persistent-volumes


【解决方案1】:

我遇到了同样的症状。我同意 OP 的观点,因为所有权。

在常见的 Mongo 映像中,MongoDB 用户的 UID 是 999。但是,插入命令或初始化容器对我来说没有成功。

成功的是在 pod 规范中添加了 securityContext 注释:

securityContext:
  fsGroup: 999

我在这里发现: https://www.edureka.co/community/35763/set-volume-mount-user-group-and-file-permissions-kubernetes

好像是这样。

【讨论】:

    猜你喜欢
    • 2017-08-24
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多