
VXLAN

Overlay、Underlay
etcd
Mutil-host networking with etcd
setup etcd cluster
在docker-node1上
ubuntu@docker-node1:~$ wget https://github.com/coreos/etcd/releases/download/v3.0.12/etcd-v3.0.12-linux-amd64.tar.gzubuntu@docker-node1:~$ tar zxvf etcd-v3.0.12-linux-amd64.tar.gzubuntu@docker-node1:~$ cd etcd-v3.0.12-linux-amd64ubuntu@docker-node1:~$ nohup ./etcd --name docker-node1 --initial-advertise-peer-urls http://192.168.205.10:2380 \--listen-peer-urls http://192.168.205.10:2380 \--listen-client-urls http://192.168.205.10:2379,http://127.0.0.1:2379 \--advertise-client-urls http://192.168.205.10:2379 \--initial-cluster-token etcd-cluster \--initial-cluster docker-node1=http://192.168.205.10:2380,docker-node2=http://192.168.205.11:2380 \--initial-cluster-state new&
在docker-node2上
ubuntu@docker-node2:~$ wget https://github.com/coreos/etcd/releases/download/v3.0.12/etcd-v3.0.12-linux-amd64.tar.gzubuntu@docker-node2:~$ tar zxvf etcd-v3.0.12-linux-amd64.tar.gzubuntu@docker-node2:~$ cd etcd-v3.0.12-linux-amd64/ubuntu@docker-node2:~$ nohup ./etcd --name docker-node2 --initial-advertise-peer-urls http://192.168.205.11:2380 \--listen-peer-urls http://192.168.205.11:2380 \--listen-client-urls http://192.168.205.11:2379,http://127.0.0.1:2379 \--advertise-client-urls http://192.168.205.11:2379 \--initial-cluster-token etcd-cluster \--initial-cluster docker-node1=http://192.168.205.10:2380,docker-node2=http://192.168.205.11:2380 \--initial-cluster-state new&
检查cluster状态
ubuntu@docker-node2:~/etcd-v3.0.12-linux-amd64$ ./etcdctl cluster-healthmember 21eca106efe4caee is healthy: got healthy result from http://192.168.205.10:2379member 8614974c83d1cc6d is healthy: got healthy result from http://192.168.205.11:2379cluster is healthy
重启docker服务
在docker-node1上
$ sudo service docker stop$ sudo /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.205.10:2379 --cluster-advertise=192.168.205.10:2375&
在docker-node2上
$ sudo service docker stop$ sudo /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.205.11:2379 --cluster-advertise=192.168.205.11:2375&
创建overlay network
在docker-node1上创建一个demo的overlay network
ubuntu@docker-node1:~$ sudo docker network lsNETWORK ID NAME DRIVER SCOPE0e7bef3f143a bridge bridge locala5c7daf62325 host host local3198cae88ab4 none null localubuntu@docker-node1:~$ sudo docker network create -d overlay demo3d430f3338a2c3496e9edeccc880f0a7affa06522b4249497ef6c4cd6571eaa9ubuntu@docker-node1:~$ sudo docker network lsNETWORK ID NAME DRIVER SCOPE0e7bef3f143a bridge bridge local3d430f3338a2 demo overlay globala5c7daf62325 host host local3198cae88ab4 none null localubuntu@docker-node1:~$ sudo docker network inspect demo[{"Name": "demo","Id": "3d430f3338a2c3496e9edeccc880f0a7affa06522b4249497ef6c4cd6571eaa9","Scope": "global","Driver": "overlay","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "10.0.0.0/24","Gateway": "10.0.0.1/24"}]},"Internal": false,"Containers": {},"Options": {},"Labels": {}}]
我们会看到在node2上,这个demo的overlay network会被同步创建
ubuntu@docker-node2:~$ sudo docker network lsNETWORK ID NAME DRIVER SCOPEc9947d4c3669 bridge bridge local3d430f3338a2 demo overlay globalfa5168034de1 host host localc2ca34abec2a none null local
通过查看etcd的key-value, 我们获取到,这个demo的network是通过etcd从node1同步到node2的
ubuntu@docker-node2:~/etcd-v3.0.12-linux-amd64$ ./etcdctl ls /docker/docker/network/docker/nodesubuntu@docker-node2:~/etcd-v3.0.12-linux-amd64$ ./etcdctl ls /docker/nodes/docker/nodes/192.168.205.11:2375/docker/nodes/192.168.205.10:2375ubuntu@docker-node2:~/etcd-v3.0.12-linux-amd64$ ./etcdctl ls /docker/network/v1.0/network/docker/network/v1.0/network/3d430f3338a2c3496e9edeccc880f0a7affa06522b4249497ef6c4cd6571eaa9ubuntu@docker-node2:~/etcd-v3.0.12-linux-amd64$ ./etcdctl get /docker/network/v1.0/network/3d430f3338a2c3496e9edeccc880f0a7affa06522b4249497ef6c4cd6571eaa9 | jq .{"addrSpace": "GlobalDefault","enableIPv6": false,"generic": {"com.docker.network.enable_ipv6": false,"com.docker.network.generic": {}},"id": "3d430f3338a2c3496e9edeccc880f0a7affa06522b4249497ef6c4cd6571eaa9","inDelete": false,"ingress": false,"internal": false,"ipamOptions": {},"ipamType": "default","ipamV4Config": "[{\"PreferredPool\":\"\",\"SubPool\":\"\",\"Gateway\":\"\",\"AuxAddresses\":null}]","ipamV4Info": "[{\"IPAMData\":\"{\\\"AddressSpace\\\":\\\"GlobalDefault\\\",\\\"Gateway\\\":\\\"10.0.0.1/24\\\",\\\"Pool\\\":\\\"10.0.0.0/24\\\"}\",\"PoolID\":\"GlobalDefault/10.0.0.0/24\"}]","labels": {},"name": "demo","networkType": "overlay","persist": true,"postIPv6": false,"scope": "global"}
