在Mesos群集上设置Mesos-DNS dockerized

我遇到了一些麻烦,试图在mesos群集上运行mesos-dns dockerized。

我已经在Windows 8.1主机上安装了2台可信赖的虚拟机。 我的VM被称为docker-vmdocker-sl-vm ; 第一个运行mesos-master,第二个运行mesos-slave。

虚拟机有2个网卡, 一台运行NAT,通过主机访问互联网,另外一台是用于内部通信的主机专用适配器。

虚拟机的IP是:

  • docker-vm的 192.168.56.101
  • docker-sl-vm的 192.168.56.102

MESOS集群正在运行好的。

我正在试图按照这个教程 。 所以,我正在用下面的马拉松描述运行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的testing提议应用程序,其中包含以下说明:

 { "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 _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无法parsing_peek._tcp.marathon.mesos SRV。

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

先谢谢你…

UPDATE

命令/etc/resolv.conf结果:

 nameserver 10.10.11.1 nameserver 10.10.10.7 

看看关于从站设置的Mesos DNS文档 :

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

我认为你的/etc/resolv.conf缺less本地IP( 192.168.56.102 )地址。

否则,你也可以尝试我最小的Mesos DNS图像 ,但是你仍然需要编辑上面的文件。