如何在Jelastic环境中将数据卷安装到添加的节点上

时间:2020-05-07 16:22:41

标签: docker jelastic

我想创建一个具有负载均衡器和cp节点的Jelastic环境。我想使用alignof(U) api方法添加cp节点,因为它需要特定的数据才能启动。我的清单看起来像这样:

allocator<T>::allocate

出于某种原因,我希望向我的高山图像提供我存储在文件夹addNodes中的数据。当然,在这种情况下,这是完全不相关的。上面的示例足够简单,可以重现。在我的实际用例中,如果没有一些特定于应用程序的数据,这些数据必须用用户输入时完成的清单设置完成,我要挂载的docker映像将无法运行。这就是为什么必须在添加Docker节点后使数据可用。

我的问题是上面的简单清单不起作用。实际上,在我的Docker节点上,我无权访问jpsVersion: 1.3 jpsType: install application: id: test-app name: Test App version: 0.0 env: topology: nodes: - nodeGroup: bl nodeType: nginx-dockerized tag: 1.16.1 displayName: Node balancing count: 1 fixedCloudlets: 1 cloudlets: 4 onInstall: - addFile - setup actions: addFile: - cmd [bl]: - mkdir /data - echo "Hello world" > /data/test.txt user: root setup: - addNodes: - nodeGroup: cp nodeType: docker displayName: Test Mount count: 1 fixedCloudlets: 1 cloudlets: 4 dockerName: alpine volumeMounts: /kickstart: readOnly: true sourcePath: /data sourceNodeGroup: bl dockerVolumes: - /kickstart 文件夹。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

volumeMounts选项不可用于操作addNodes

这是一个如何实现的示例:

type: install
name: Test App
​
nodes:
  - nodeGroup: bl
    nodeType: nginx
    tag: 1.16.1
    displayName: Node balancing    
    cloudlets: 4
​
  - nodeGroup: cp
    displayName: Test Mount
    cloudlets: 4
    image: alpine
    startServiceOnCreation: false
    volumes: 
      - /kickstart
    volumeMounts: 
      /kickstart:       
        sourcePath: /data
        sourceNodeGroup: bl     
        readOnly: true

onInstall:
  - cmd [bl]: |-
      echo "Hello world" > /data/test.txt
    user: root    

  - env.control.ExecDockerRunCmd [${nodes.cp.join(id,)}] 

您还可以使用volumeMounts中不存在的目录

它将自行创建所有内容