Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 通过Kubernetes安装卷时Neo4j关闭_Azure_Kubernetes_Neo4j_Persistent Volumes - Fatal编程技术网

Azure 通过Kubernetes安装卷时Neo4j关闭

Azure 通过Kubernetes安装卷时Neo4j关闭,azure,kubernetes,neo4j,persistent-volumes,Azure,Kubernetes,Neo4j,Persistent Volumes,我为neo4j创建了一个自定义dockerfile,用于导入必要的插件。接下来,我创建了一个部署yaml,我正在Azure上的Kubernetes上运行它。部署工作得很好,我可以在预期的URL上访问浏览器,效果非常好。但是,在我装入卷的那一刻,neo4j就无法使用下面提供的错误堆栈启动。Azure似乎正在使用干扰neo4j的必需目录?然而,我不知道如何解决这个问题 有什么想法吗 注二: 注意,挂载的目录是空的,因此还没有数据库 持久卷(声明)已经在一个简单的映像(如nginx)上进行了测试,效果

我为neo4j创建了一个自定义dockerfile,用于导入必要的插件。接下来,我创建了一个部署yaml,我正在Azure上的Kubernetes上运行它。部署工作得很好,我可以在预期的URL上访问浏览器,效果非常好。但是,在我装入卷的那一刻,neo4j就无法使用下面提供的错误堆栈启动。Azure似乎正在使用干扰neo4j的必需目录?然而,我不知道如何解决这个问题

有什么想法吗

注二:

  • 注意,挂载的目录是空的,因此还没有数据库
  • 持久卷(声明)已经在一个简单的映像(如nginx)上进行了测试,效果良好
  • 在下面找到错误堆栈和部署yaml

    我的失业问题

    apiVersion: v1
    kind: Service
    metadata:
      name: myservice
    spec:
      selector:
        app: mygraph
      ports:
        - name: bolt
          protocol: TCP
          port: 7687
          targetPort: 7687
          nodePort: 30076
        - name: http
          protocol: TCP
          port: 7474
          targetPort: 7474
          nodePort: 30074
        - name: https
          protocol: TCP
          port: 7473
          targetPort: 7473
          nodePort: 30073
      type: LoadBalancer
      loadBalancerIP: 40.118.172.46
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mygraph-deployment
      labels:
        app: mygraph
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mygraph
      template:
        metadata:
          labels:
            app: mygraph
        spec:
          containers:
          - name: mygraph
            image: mycontainer.azurecr.io/mygraph:dev
            securityContext:
              privileged: true
            ports:
            - containerPort: 7687
            - containerPort: 7474
            - containerPort: 7473
            env:
              - name: NEO4J_dbms_jvm_additional
                value: "-Xms512m -Xmx6g"
            # When adding the below lines the deployment failes. Without it, it works great!
            volumeMounts:
            - name: neo4jdata
              mountPath: /data
          volumes:
            - name: neo4jdata
              persistentVolumeClaim:
                claimName: azurefile
    
    以及相应的错误堆栈

    2019-09-05 07:02:12.522+0000 INFO ======== Neo4j 3.3.9 ========
    
    2019-09-05 07:02:12.560+0000 INFO Starting...
    
    2019-09-05 07:02:14.122+0000 INFO Bolt enabled on 0.0.0.0:7687.
    
    2019-09-05 07:02:14.274+0000 ERROR Failed to start Neo4j: Starting Neo4j failed: Component 'org.neo4j.server.database.LifecycleManagingDatabase@149dd36b' was successfully initialized, but failed to start. Please see the attached cause exception "Unable to create directory path [/var/lib/neo4j/data/databases/graph.db] for Neo4j store.". Starting Neo4j failed: Component 'org.neo4j.server.database.LifecycleManagingDatabase@149dd36b' was successfully initialized, but failed to start. Please see the attached cause exception "Unable to create directory path [/var/lib/neo4j/data/databases/graph.db] for Neo4j store.".
    
    org.neo4j.server.ServerStartupException: Starting Neo4j failed: Component 'org.neo4j.server.database.LifecycleManagingDatabase@149dd36b' was successfully initialized, but failed to start. Please see the attached cause exception "Unable to create directory path [/var/lib/neo4j/data/databases/graph.db] for Neo4j store.".
    
    at org.neo4j.server.exception.ServerStartupErrors.translateToServerStartupError(ServerStartupErrors.java:68)
    
    at org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:220)
    
    at org.neo4j.server.ServerBootstrapper.start(ServerBootstrapper.java:111)
    
    at org.neo4j.server.ServerBootstrapper.start(ServerBootstrapper.java:79)
    
    at org.neo4j.server.CommunityEntryPoint.main(CommunityEntryPoint.java:32)
    
    Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.server.database.LifecycleManagingDatabase@149dd36b' was successfully initialized, but failed to start. Please see the attached cause exception "Unable to create directory path [/var/lib/neo4j/data/databases/graph.db] for Neo4j store.".
    
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:466)
    
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:107)
    
    at org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:212)
    
    ... 3 more
    
    Caused by: java.lang.RuntimeException: Error starting org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory, /var/lib/neo4j/data/databases/graph.db
    
    at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.initFacade(GraphDatabaseFacadeFactory.java:211)
    
    at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.newFacade(GraphDatabaseFacadeFactory.java:126)
    
    at org.neo4j.server.CommunityNeoServer.lambda$static$0(CommunityNeoServer.java:58)
    
    at org.neo4j.server.database.LifecycleManagingDatabase.start(LifecycleManagingDatabase.java:88)
    
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:445)
    
    ... 5 more
    
    Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.internal.locker.StoreLockerLifecycleAdapter@134d26af' was successfully initialized, but failed to start. Please see the attached cause exception "Unable to create directory path [/var/lib/neo4j/data/databases/graph.db] for Neo4j store.".
    
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:466)
    
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:107)
    
    at org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.initFacade(GraphDatabaseFacadeFactory.java:207)
    
    ... 9 more
    
    Caused by: org.neo4j.kernel.StoreLockException: Unable to create path for store dir: /var/lib/neo4j/data/databases/graph.db. Please ensure no other process is using this database, and that the directory is writable (required even for read-only access)
    
    at org.neo4j.kernel.internal.locker.StoreLocker.storeLockException(StoreLocker.java:116)
    
    at org.neo4j.kernel.internal.locker.StoreLocker.checkLock(StoreLocker.java:79)
    
    at org.neo4j.kernel.internal.locker.GlobalStoreLocker.checkLock(GlobalStoreLocker.java:60)
    
    at org.neo4j.kernel.internal.locker.StoreLockerLifecycleAdapter.start(StoreLockerLifecycleAdapter.java:36)
    
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:445)
    
    ... 11 more
    
    Caused by: java.io.IOException: Unable to create directory path [/var/lib/neo4j/data/databases/graph.db] for Neo4j store.
    
    at org.neo4j.io.fs.DefaultFileSystemAbstraction.mkdirs(DefaultFileSystemAbstraction.java:124)
    
    at org.neo4j.kernel.internal.locker.StoreLocker.checkLock(StoreLocker.java:73)
    
    ... 14 more
    
    2019-09-05 07:02:14.317+0000 INFO Neo4j Server shutdown initiated by request
    

    发现这是一个向Azure写入数据的权限问题。特别是在
    StorageClass
    的设置中,您可以设置附加的
    mountOptions
    。其中之一是
    uid
    ,它应该设置为100-用于neo4j的用户id

    StorageClass yaml的示例:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: azurefile-neo4j
    provisioner: kubernetes.io/azure-file
    reclaimPolicy: Retain
    mountOptions:
      - dir_mode=0755
      - file_mode=0755
      - uid=100 # Allow write access for neo4j
      - gid=1000
    parameters:
      skuName: Standard_LRS
    

    但奇怪的是,文件
    /data/dbms
    以前编写成功,而
    /data/databases
    无法编写。dbms和数据库似乎是由不同的用户创建的?但这将是一个单独的问题。

    发现这是一个向Azure写入数据的权利问题。特别是在
    StorageClass
    的设置中,您可以设置附加的
    mountOptions
    。其中之一是
    uid
    ,它应该设置为100-用于neo4j的用户id

    StorageClass yaml的示例:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: azurefile-neo4j
    provisioner: kubernetes.io/azure-file
    reclaimPolicy: Retain
    mountOptions:
      - dir_mode=0755
      - file_mode=0755
      - uid=100 # Allow write access for neo4j
      - gid=1000
    parameters:
      skuName: Standard_LRS
    

    但奇怪的是,文件
    /data/dbms
    以前编写成功,而
    /data/databases
    无法编写。dbms和数据库似乎是由不同的用户创建的?但这将是一个单独的问题。

    在创建卷时,您在卷的规范中设置了什么访问模式?@Pablisimo PersistentVolume和PersistentVolumeClaim的访问模式设置为RWX。我想这是意料之中的吧?此外,我在Azure文件中看到/data/dbms文件夹已成功创建,但/data/databases文件夹未成功创建。我想是因为dbms是在容器初始化期间创建的,而docker映像创建中已经存在/data/databases文件夹。创建卷时,您在卷的规范中设置了什么accessMode?@Pablissimo accessMode用于PersistentVolume和PersistentVolumeClaim设置为RWX。我想这是意料之中的吧?此外,我在Azure文件中看到/data/dbms文件夹已成功创建,但/data/databases文件夹未成功创建。我想是因为dbms是在容器初始化期间创建的,而/data/databases文件夹已经存在于docker映像创建中。