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
wget -O /usr/local/src/calicoctl
https://github.com/projectcalico/calicoctl/releases/download/v1.6.2/calicoctl
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
在node211运行容器
docker run --net cal_net1 --name box1 -tid busybox
docker exec box1 ip a
ip a
ip route
在node212运行容器
docker run --net cal_net1 --name box2 -tid busybox
docker exec box2 ip a
ip a
ip route
测试连通性
docker exec box1 ping -c 4 box2
docker exec box1 ping -c 4 10.0.0.212
docker exec box2 ping -c 4 box1
docker exec box2 ping -c 10.0.0.211