You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@mesos.apache.org by Avinash sridharan <av...@mesosphere.io> on 2017/08/01 00:15:18 UTC

Re: Review Request 60600: Set container DNS with `--default_container_dns` in CNI isolator.

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60600/#review181863
-----------------------------------------------------------




src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
Lines 1008-1028 (patched)
<https://reviews.apache.org/r/60600/#comment257641>

    Just a thought? Storing the CNI network DNS entries in a map and the defaultDNS also in an `Option` at startup might simplify this code a lot over here?


- Avinash sridharan


On July 28, 2017, 2:34 p.m., Qian Zhang wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/60600/
> -----------------------------------------------------------
> 
> (Updated July 28, 2017, 2:34 p.m.)
> 
> 
> Review request for mesos, Avinash sridharan and Jie Yu.
> 
> 
> Bugs: MESOS-7709
>     https://issues.apache.org/jira/browse/MESOS-7709
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Set container DNS with `--default_container_dns` in CNI isolator.
> 
> 
> Diffs
> -----
> 
>   src/slave/containerizer/mesos/isolators/network/cni/cni.cpp 831bc7d0774a0ad3c8cbd7f42d4a3f8bd34d3243 
> 
> 
> Diff: https://reviews.apache.org/r/60600/diff/5/
> 
> 
> Testing
> -------
> 
> sudo make check
> 
> 1. Start Mesos master.
> ```
> $ sudo ./bin/mesos-master.sh --work_dir=/opt/mesos
> ```
> 
> 2. Start Mesos agent.
> ```
> $ sudo ./bin/mesos-slave.sh --master=192.168.122.216:5050 --containerizers=mesos,docker --image_providers=docker --image_provisioner_backend=aufs --isolation=filesystem/linux,docker/runtime,network/cni,cgroups/cpu,cgroups/mem --network_cni_config_dir=/opt/cni/net_configs --network_cni_plugins_dir=/opt/cni/plugins --work_dir=/opt/mesos --docker_store_dir=/opt/mesos/store/docker --executor_registration_timeout=60mins --default_container_dns=file:///home/stack/dns.json
> 
> $ cat /opt/cni/net_configs/net1 
> {
>     "name": "net1",
>     "type": "bridge",
>     "bridge": "br1",
>     "isGateway": true,
>     "ipMasq": true,
>     "ipam": {
>         "type": "host-local",
>         "subnet": "192.168.1.0/24",
>         "routes": [
>             { "dst": "0.0.0.0/0" }
>         ]
>     }
> }
> 
> $ cat /opt/cni/net_configs/net2 
> {
>     "name": "net2",
>     "type": "bridge",
>     "bridge": "br2",
>     "isGateway": true,
>     "ipMasq": true,
>     "ipam": {
>         "type": "host-local",
>         "subnet": "192.168.2.0/24",
>         "routes": [
>             { "dst": "0.0.0.0/0" }
>         ]
>     },
>     "dns": {
>         "nameservers": [ "8.8.4.4" ],
>         "domain": "net2.com",
>         "search": [ "yyy.com" ],
>         "options": [ "attempts:3" ]
>     }
> }
> 
> $ cat /home/stack/dns.json
> {
>   "mesos": [
>     {
>       "network_mode": "CNI",
>       "network_name": "net1",
>       "dns": {
>         "nameservers": [ "8.8.8.8" ],
>         "search": [ "xxx.com" ],
>         "options": [ "timeout:4" ]
>       }
>     }
>   ]
> }
> ```
> 
> 3. Launch a unified container with `mesos-execute`.
> ```
> $ sudo src/mesos-execute --master=192.168.122.216:5050 --task=file:///home/stack/task.json
> 
> $ cat /home/stack/task.json 
> {
>   "name": "test",
>   "task_id": {"value" : "test"},
>   "agent_id": {"value" : ""},
>   "resources": [
>     {
>       "name": "cpus",
>       "type": "SCALAR",
>       "scalar": {
>         "value": 0.1
>       }
>     },
>     {
>       "name": "mem",
>       "type": "SCALAR",
>       "scalar": {
>         "value": 32
>       }
>     }
>   ],
>   "command": {
>     "value": "sleep 300"
>   },
>   "container": {
>     "type": "MESOS",
>     "mesos": {
>       "image": {
>         "type": "DOCKER",
>         "docker": {
>           "name": "busybox"
>         }
>       }
>     },
>     "network_infos": [
>       {
>         "name": "net1"
>       },
>       {
>         "name": "net2"
>       }
>     ]
>   }
> }
> ```
> 
> 4. Check the DNS configuration of the unified container.
> ```
> $ ps -ef | grep sleep 
> root     20060 20037  2 21:45 ?        00:00:00 sh -c sleep 300
> root     20074 20060  0 21:45 ?        00:00:00 sleep 300
> 
> $ sudo nsenter -t 20060 -m -u -n cat /etc/resolv.conf           
> domain net2.com
> search yyy.com xxx.com
> options attempts:3 timeout:4
> nameserver 8.8.4.4
> nameserver 8.8.8.8
> ```
> 
> 
> Thanks,
> 
> Qian Zhang
> 
>