如何使用docker卷作为mesos/marathon的持久卷?

5hcedyr0  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(477)

我正在coreos上运行mesos和ceph集群,带有一个工作的ceph rbd docker卷插件,但我不清楚如何将其用于mesos/marathon。。。创建/使用 rbd 不过,单个docker容器的卷可以完美地工作。
我找不到任何文章/博客文章/任何关于通过marathon自动创建(以及在mesos奴隶之间“任务迁移”的情况下,重新Map)这些卷的内容。对我来说尤其重要的是,当每个示例都需要有自己的卷时,如何运行有状态服务的多个示例(想象一下mesos/marathon上的mongodb replicaset)。
我知道mesos持久卷文档,我也看到了马拉松式的问题,但我仍然非常困惑如何或何时可以使用它。。。
这里还有其他问题,所以:
如何使用马拉松中的卷
mesos上的docker:卷放在哪个节点上?
docker卷插件
但不幸的是,这个问题并没有真正的答案。
使用rexray的emc代码示例也只包含一个示例示例,我还可以使用上面提到的volume插件轻松地处理这个示例:

{
    "id": "nginx",
    "container": {
        "docker": {
            "image": "million12/nginx",
            "network": "BRIDGE",
            "portMappings": [{
                "containerPort": 80,
                "hostPort": 0,
                "protocol": "tcp"
            }],
            "parameters": [{
                "key": "volume-driver",
                "value": "rbd"
            }, {
                "key": "volume",
                "value": "nginx-data:/data/www"
            }]
        }
    },
    "cpus": 0.2,
    "mem": 32.0,
    "instances": 1
}

这个 nginx-data 在这种情况下,卷将自动创建。但是如果我想使用持久卷和多个示例呢?

mitkmikd

mitkmikd1#

这是flocker要解决的一个用例(免责声明:我是clusterhq的cto)。有关flocker<=>mesos/marathon交互的演示,请参阅此博客文章,它显示了flocker控制服务如何充当集群环境中存在容器卷的“真相来源”。然后,flocker将按需创建这些卷,然后随着引用这些卷的容器在集群中移动,协调主机之间的Map和取消Map。
flocker通过提供一个集群范围的卷名命名空间来实现这一点,这些卷名可以通过flocker plugin for docker with marathon使用,从而为mesos集群中的有状态容器提供可移植性和高可用性。
flocker还有一个ceph驱动器:
谷歌“flocker ceph driver”
在coreos上工作:
谷歌“coreos上的flocker演示”
您可以通过为每个容器指定自己的卷名(如mongodb)来运行多示例作业(如带有副本集的mongodb) mongo_1 , mongo_2 等)。
把这些东西放在一起是很重要的,但我很乐意帮忙。如果你愿意的话,我可以专门为你的堆栈(ceph+coreos+docker+mesos+marathon)写一个详细的指南。

相关问题