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

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

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

  1. {
  2. "id": "nginx",
  3. "container": {
  4. "docker": {
  5. "image": "million12/nginx",
  6. "network": "BRIDGE",
  7. "portMappings": [{
  8. "containerPort": 80,
  9. "hostPort": 0,
  10. "protocol": "tcp"
  11. }],
  12. "parameters": [{
  13. "key": "volume-driver",
  14. "value": "rbd"
  15. }, {
  16. "key": "volume",
  17. "value": "nginx-data:/data/www"
  18. }]
  19. }
  20. },
  21. "cpus": 0.2,
  22. "mem": 32.0,
  23. "instances": 1
  24. }

这个 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)写一个详细的指南。

相关问题