如何使用marathon中的卷

xqk2d5yq  于 2021-06-21  发布在  Mesos
关注(0)|答案(4)|浏览(295)

我和mesos+marathon+docker合作了很长一段时间,但我在某个时候遇到了麻烦。目前,我尝试处理持久容器,并尝试使用“volumes from”参数,但我无法使其工作,因为我不知道如何找出数据框的名称,将其作为json中的键。我试着用这里的例子

{
    "id": "privileged-job",
    "container": {
        "docker": {
            "image": "mesosphere/inky"
            "privileged": true,
            "parameters": [
                { "key": "hostname", "value": "a.corp.org" },
                { "key": "volumes-from", "value": "another-container" },
                { "key": "lxc-conf", "value": "..." }
            ]
        },
        "type": "DOCKER",
        "volumes": []
    },
    "args": ["hello"],
    "cpus": 0.2,
    "mem": 32.0,
    "instances": 1
}

我真的很感激任何帮助:-)

r6hnlfcb

r6hnlfcb1#

{
    "id": "data-container",
    "container": {
        "docker": {
            "image": "mesosphere/inky"
        },
        "type": "DOCKER",
        "volumes": [
      {
        "containerPath": "/data",
        "hostPath": "/var/data/a",
        "mode": "RW"
      }
    ]
    },
    "args": ["data-only"],
    "cpus": 0.2,
    "mem": 32.0,
    "instances": 1
}
{
    "id": "privileged-job",
    "container": {
        "docker": {
            "image": "mesosphere/inky"
            "privileged": true,
            "parameters": [
                { "key": "hostname", "value": "a.corp.org" },
                { "key": "volumes-from", "value": "data-container" },
                { "key": "lxc-conf", "value": "..." }
            ]
        },
        "type": "DOCKER",
        "volumes": []
    },
    "args": ["hello"],
    "cpus": 0.2,
    "mem": 32.0,
    "instances": 1
}

可能是这样吧?

o2g1uqev

o2g1uqev2#

另一种方法是编写一个能够运行所需docker命令的定制mesos框架。为了知道要接受哪些提议以及将每个任务放置在何处,您可以使用来自:/apps/v2/(任务键下)的马拉松信息。
编写新的mesos框架的一个良好起点是:https://github.com/mesosphere/rendler

g6ll5ycj

g6ll5ycj3#

据我所知: Docker --volume-from 获取容器的id或名称。
由于您的datacontainer也是使用marathon启动的,因此它将获得一个id(不包括如何从marathon获取此id)和该表单的名称: mesos-0fb2e432-7330-4bfe-bbce-4f77cf382bb4 与mesos中的任务id和docker id无关。
解决方案是为您的web ubuntu应用程序编写如下内容:

"parameters": [
    { "key": "volumes-from", "value": "mesos-0fb2e432-7330-4bfe-bbce-4f77cf382bb4" }
]

因为这个docker id在marathon中是未知的,所以使用以marathon开头的datacontainer是不实际的。
您可以尝试直接用docker启动数据容器(不使用marathon),并像以前一样使用它,但因为您事先不知道在哪里 web-ubuntu 将被安排(除非你添加一个强制约束)这是不实际的。

mklgxw1f

mklgxw1f4#

mesos支持使用key和value传递volume plugin的参数。但是问题是如何传递卷名,mesos希望卷名是绝对路径,或者如果绝对路径没有传递,那么它将合并随从属容器沙盒文件夹提供的名称。它们这样做主要是为了支持检查点,以防从属服务器意外崩溃。
在上述增强之前,唯一的选择是使用另一个键值对参数。例如在上述情况下
{“key”:“volumes from”,“value”:“databox”},{“key”:“volume”,“value”:“datebox\u volume”}
我已经测试了上面的插件和它的作品。

相关问题