无法在Azure容器实例中将Azure文件共享作为mongodb卷挂载

时间:2020-01-17 07:49:20

标签: mongodb azure azure-container-instances

我正在尝试使用azure容器实例设置mongo数据库实例,并将其安装在Azure文件共享上。

我们收到以下错误:

[initandlisten] WiredTiger error (1) [1579245437:724939][1:0x7f9419c67b00], connection: __posix_open_file, 667: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1579245437:724939][1:0x7f9419c67b00], connection: __posix_open_file, 667: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
W  STORAGE  [initandlisten] Failed to start up WiredTiger under any compatibility version.
F  STORAGE  [initandlisten] Reason: 1: Operation not permitted
F  -        [initandlisten] Fatal Assertion 28595 at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 789
[initandlisten] 

***aborting after fassert() failure

AZ命令我正在使用以下命令来创建存储帐户,文件共享和容器实例:

az storage account create -g $resourcegroup -n $storageaccount --sku Standard_LRS

az storage share create --name $mongofileshare --account-name $storageaccount

az container create --resource-group $resourcegroup --name $containername --image mongo:latest --dns-name-label $DNSName --ports 27017 --protocol TCP --environment-variables 'MONGO_INITDB_ROOT_USERNAME=admin' 'MONGO_INITDB_ROOT_PASSWORD=*******' --location westeurope --azure-file-volume-account-name $storageaccount --azure-file-volume-account-key '**********' --azure-file-volume-share-name 'mongofileshare' --azure-file-volume-mount-path '/data/db'

3 个答案:

答案 0 :(得分:2)

引起错误的原因是,将Azure文件共享安装到容器实例将覆盖安装点中的所有文件。显示警告here

将Azure文件共享安装到容器实例类似于 Docker绑定安装。请注意,如果您将共享装入容器中 文件或目录所在的目录,这些文件或 目录被挂载遮挡,并且在 容器运行。

因此,不建议将Azure文件共享安装到现有目录,该目录包含用于初始化Mongo DB的文件。推荐目录将类似于路径/var/logs/

答案 1 :(得分:0)

非常感谢上面的@Charles Xu和@Santhosh,您可以节省我的时间。在这里,我使用适用于AKS,mongoDB和Azure Fileshare的yaml总结了他们的解决方案:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo-db
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo-db
  template:
    metadata:
      labels:
        app: mongo-db
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: mongo-db
        image: mongo:latest
        command: ["mongod"] # Note here
        args: ["--dbpath=/data/mongoaz"] # Note here 
        ports:
        - containerPort: 27017
          name: redis
        resources:
          requests:
            cpu: 250m
          limits:
            cpu: 500m
        volumeMounts:
        - name: db-vol
          mountPath: /data/mongoaz
      volumes:
      - name: db-vol
        persistentVolumeClaim:
          claimName: my-db-pvc

答案 2 :(得分:0)

更新:

如果您可以使用Helm,它将更加容易。在这里查看MonnDB的Bitnami图表:

https://github.com/bitnami/charts/tree/master/bitnami/mongodb

不会有这种头痛的问题