我正在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
在这种情况下,卷将自动创建。但是如果我想使用持久卷和多个示例呢?
1条答案
按热度按时间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)写一个详细的指南。