我在尝试在mesos集群上运行dockerized的mesos-dns时遇到了一些麻烦。
我已经在Windows 8.1主机上使用ubuntu trusty设置了2个虚拟机。我的虚拟机称为 docker-vm 和 docker-sl- vm ;其中第一个运行mesos-master,第二个运行mesos-slave。
VM有2个网卡;一个运行NAT以便通过主机访问Internet,另一个运行NAT的主机专用适配器进行内部通信。
VM的IP为:
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 的测试建议应用程序:
{ "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命令dig _peek._tcp.marathon.mesos SRV获得了以下答案:
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
当我在从属计算机(正在运行此容器)上运行此端口时,我们可以清楚地看到绑定到的端口和IP _peek._tcp.marathon.mesos SRV, 但 得到以下结果:
_peek._tcp.marathon.mesos SRV
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:
/etc/resolv.conf
nameserver 10.10.11.1 nameserver 10.10.10.7
看看有关 Slave Setup 的Mesos DNS文档: __
要允许Mesos任务将Mesos- DNS用作主要DNS服务器,必须/etc/resolv.conf在每个从属服务器中编辑文件并添加新的名称服务器。例如,如果mesos- dns在IP地址为10.181.64.13的服务器上运行,则应/etc/resolv.conf在每个从属节点的开头添加行名称服务器10.181.64.13 。
我认为您的IP 192.168.56.102地址中缺少本地IP()地址/etc/resolv.conf。
192.168.56.102
否则,您也可以尝试使用我的最小Mesos DNS映像,但是您仍然必须编辑上述文件。