【问题标题】:Setup Mesos-DNS dockerized on a mesos cluster在 mesos 集群上设置 Mesos-DNS dockerized
【发布时间】:2016-01-28 19:40:23
【问题描述】:

我在尝试在 mesos 集群上运行 mesos-dns dockerized 时遇到了一些问题。

我在 Windows 8.1 主机上设置了 2 个 ubuntu 可信赖的虚拟机。 我的虚拟机被称为 docker-vmdocker-sl-vm;第一个运行 mesos-master,第二个运行 mesos-slave。

VM 有 2 个网卡;一个运行 NAT 以通过主机访问 Internet,另一个是用于内部通信的 Host-only 适配器。

虚拟机的 IP 是:

  • 192.168.56.101 用于 docker-vm
  • 192.168.56.102 用于 docker-sl-vm

MESOS 集群运行正常。

我正在尝试关注this tutorial。因此,我正在运行 mesos-dns 并使用以下马拉松描述:

{
    "args": [
        "/mesos-dns",
        "-config=/config.json"
    ],
    "container": {
        "docker": {
            "image": "mesosphere/mesos-dns",
            "network": "HOST"
        },
        "type": "DOCKER",
        "volumes": [
            {
                "containerPath": "/config.json",
                "hostPath": "/usr/local/mesos-dns/config.json",
                "mode": "RO"
            }
        ]
    },
    "cpus": 0.5,
    "mem": 256,
    "id": "mesos-dns",
    "instances": 1,
    "constraints": [["hostname", "CLUSTER", "docker-sl-vm"]]
}

还有这个config.json

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

我还在运行一个名为 peek 的测试提案应用程序,其描述如下:

{
  "id": "peek",
  "cmd": "env >env.txt && python3 -m http.server 8080",
  "cpus": 0.5,
  "mem": 32.0,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "python:3",
      "network": "BRIDGE",
      "portMappings": [
        { "containerPort": 8080, "hostPort": 0 }
      ]
    }
  }
}

问题

进入教程,一个dig命令如dig _peek._tcp.marathon.mesos SRV得到如下答案:

; <<>> DiG 9.9.5-3ubuntu0.5-Ubuntu <<>> _peek._tcp.marathon.mesos SRV
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57329
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;_peek._tcp.marathon.mesos. IN  SRV

;; ANSWER SECTION:
_peek._tcp.marathon.mesos. 60   IN  SRV 0 0 31000 peek-27346-s0.marathon.mesos.

;; ADDITIONAL SECTION:
peek-27346-s0.marathon.mesos. 60 IN A   10.141.141.10

;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Oct 24 23:21:15 UTC 2015
;; MSG SIZE  rcvd: 160

我们可以清楚地看到绑定到_peek._tcp.marathon.mesos SRV 的端口和IP,但是当我在我的从属机器上运行它时——它正在运行这个容器——我得到了这个结果:

docker@docker-sl-vm:~$ dig _peek._tcp.marathon.mesos SRV

; <<>> DiG 9.9.5-3ubuntu0.5-Ubuntu <<>> _peek._tcp.marathon.mesos SRV
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 33415
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;_peek._tcp.marathon.mesos. IN  SRV

;; AUTHORITY SECTION:
.           10791   IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2015102801 1800 900 604800 241

;; Query time: 1 msec
;; SERVER: 10.10.11.1#53(10.10.11.1)
;; WHEN: Wed Oct 28 17:06:30 BRT 2015
;; MSG SIZE  rcvd: 129

mesos-dns 似乎无法解析 _peek._tcp.marathon.mesos SRV。

有人知道为什么以及如何解决它吗?

提前谢谢你...

更新

/etc/resolv.conf 命令的结果:

nameserver 10.10.11.1
nameserver 10.10.10.7

【问题讨论】:

  • 我是上述教程的作者。很抱歉看到您遇到问题。 cat /etc/resolv.conf 带给你什么?
  • 嘿迈克尔!感谢您的教程和回答!我刚刚根据您的要求更新了问题。
  • 我读过一些人在使用 ubuntu、docker 和 dns 时遇到了麻烦。使用 53 端口与 dnsmasq 相关的问题。所以,我把它关掉了,但还是没有结果。
  • 您可以尝试将第一个条目设置为127.0.0.1,另请参阅stackoverflow.com/questions/30524236/… 并让我知道这是否有任何改变?

标签: dns docker mesos marathon


【解决方案1】:

看看Mesos DNS docs关于Slave Setup

要允许 Mesos 任务使用 Mesos-DNS 作为主 DNS 服务器,您必须在每个从属服务器中编辑文件 /etc/resolv.conf 并添加一个新的名称服务器。例如,如果mesos-dns运行在IP地址为10.181.64.13的服务器上,则应在每个从节点上的/etc/resolv.conf开头添加行nameserver 10.181.64.13。

我认为您的 /etc/resolv.conf 中缺少本地 IP (192.168.56.102) 地址。

否则,您也可以尝试my minimal Mesos DNS image,但您仍然需要编辑上述文件。

【讨论】:

  • 我做了更改,但没有用,但它适用于您的图像!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多