在Mesos群集上设置Mesos-DNS dockerized
我遇到了一些麻烦,试图在mesos群集上运行mesos-dns dockerized。
我已经在Windows 8.1主机上安装了2台可信赖的虚拟机。 我的VM被称为docker-vm和docker-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图像 ,但是你仍然需要编辑上面的文件。