mesos/marathon 的新手。如何部署一个新的自定义docker?

New to mesos/marathon. How to deploy a new self defined docker?

我是 mesos 和 marathon 的新手。

我有一个设置,其中一个 docker 是自定义的,另一个是 mysql 服务器实例。这两个链接并传递信息。我如何在 mesos 上部署它?我正在使用当前设置的单节点主从。

official Marathon documentation 表示参数对象(文档页面底部)中允许任意 docker 命令,因此您可能可以使用它来连接它们。

或者 Mesos-DNS 似乎是一个解决方案。一旦您从单个主机移动到多个主机并且您的单个容器被安排到不同的主机,第一个解决方案应该会失败。

注意:我对 docker 也不是很有经验,但这些似乎是我能找到的唯一选择。然而,将 Docker 集成到 Mesos 是一个持续的过程,将 Docker Swarm 集成到 Mesos 目前正在进行中,所以这些问题可能会在(希望不久的)将来解决。

为了 link 你的 Docker 容器在下面使用 Mesos-DNS. I'm using Playa Mesos 来解释设置。

在 Playa 上设置 Mesos-DNS 非常简单:使用 mesosphere/mesos-dns 图像并使用以下应用规范将其部署到 Marathon 上:

{
"id": "mesos-dns",
"instances": 1,
"cpus": 1,
"mem": 512,
"cmd": "/mesos-dns -config=/config.json",
"container": {
  "type": "DOCKER",
  "docker": {
    "image": "mesosphere/mesos-dns:latest",
    "network": "HOST"
 },
 "volumes": [
      {
        "containerPath": "/config.json",
        "hostPath": "/etc/mesos-dns/config.js",
        "mode": "RW"
      }
    ]
  }
}

与以下config.js:

{
 "zk": "zk://127.0.0.1:2181/mesos",
 "refreshSeconds": 60,
 "ttl": 60,
 "domain": "mesos",
 "port": 53,
 "resolvers": ["10.0.2.3"],
 "timeout": 5,
 "email": "root.mesos-dns.mesos"
}

此外,请确保 resolv.conf 在第一个位置有正确的条目:

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
nameserver 10.0.2.3
search net

然后您可以动态 discover 您的服务(在 Vagrant 盒子上),如下所示:

dig _$APPID._tcp.marathon.mesos SRV

其中 $APPID 是您用于部署自定义 Docker 映像的标识符。上面的命令将告诉您 IP 和 Marathon 分配给您的应用程序的端口。您也可以使用 Mesos-DNS HTTP API 进行服务发现。

注1:DCOS预装了Mesos-DNS,可以直接用于服务发现。

注意 2:如果您 运行 遇到应用不理解 SRV 记录的问题,您可以尝试以下解决方法:https://github.com/the-tetanus-clinic/srv-shim