calico 跨主机容器网络通信

环境说明

etcd服务器10.0.0.210, 安装版本3.1.11


两台虚拟机

主机1:

hostname: node211

ip:10.0.0.211

OS: centos 7.4

docker: 1.12.6


主机2:

hostname: node212

ip: 10.0.0.212

os: centos 7.4

docker 1.12.6



安装docker
yum install docker
systemctl start docker
systemctl enable docker

编辑/usr/lib/systemd/system/docker.service
添加--cluster-store=etcd://10.0.0.210:2379
systemctl daemon-reload
systemctl restart docker


安装calico
chmod +x /usr/local/src/calicoctl

运行calico
./calicoctl node run --init-system --dryrun --node-image=quay.io/calico/node:v2.6.3
docker run --net=host --privileged --name=calico-node --rm -e ETCD_ENDPOINTS=http://10.0.0.210:2379 -e NODENAME=node211 -e CALICO_NETWORKING_BACKEND=bird -e CALICO_LIBNETWORK_ENABLED=true -v /var/log/calico:/var/log/calico -v /var/run/calico:/var/run/calico -v /lib/modules:/lib/modules -v /run:/run -v /run/docker/plugins:/run/docker/plugins -v /var/run/docker.sock:/var/run/docker.sock quay.io/calico/node:v2.6.3

./calicoctl node run --init-system --dryrun --node-image=quay.io/calico/node:v2.6.3
docker run --net=host --privileged --name=calico-node --rm -e ETCD_ENDPOINTS=http://10.0.0.210:2379 -e NODENAME=node212 -e CALICO_NETWORKING_BACKEND=bird -e CALICO_LIBNETWORK_ENABLED=true -v /var/log/calico:/var/log/calico -v /var/run/calico:/var/run/calico -v /lib/modules:/lib/modules -v /run:/run -v /run/docker/plugins:/run/docker/plugins -v /var/run/docker.sock:/var/run/docker.sock quay.io/calico/node:v2.6.3

查看状态
./calicoctl node status

停止calico
docker stop calico-node

创建网络 (在node211或者node212运行一次即可,会自动同步)
docker network create --driver calico --ipam-driver calico-ipam cal_net1
calico 跨主机容器网络通信
在node211运行容器
docker run --net cal_net1 --name box1 -tid busybox
docker exec box1 ip a
calico 跨主机容器网络通信
ip a
calico 跨主机容器网络通信
ip route
calico 跨主机容器网络通信

在node212运行容器
docker run --net cal_net1 --name box2 -tid busybox
docker exec box2 ip a
calico 跨主机容器网络通信
ip a
calico 跨主机容器网络通信

ip route
calico 跨主机容器网络通信

测试连通性
docker exec box1 ping -c 4 box2
docker exec box1 ping -c 4 10.0.0.212
calico 跨主机容器网络通信
docker exec box2 ping -c 4 box1
docker exec box2 ping -c 10.0.0.211
calico 跨主机容器网络通信