flannel 安裝
sudo yum install kernel-headers golang gcc
yum install flannel
flannel 配置
在etcd中設置變量
etcdctl set /coreos.com/network/config '{ "Network": "172.17.0.0/16" }'
配置flannel
vi /etc/sysconfig/flanneld
# Flanneld configuration options # etcd url location. Point this to the server where etcd runs FLANNEL_ETCD="http://10.1.99.13:2379,10.1.99.14:2379,10.1.99.15:2379" # etcd config key. This is the configuration key that flannel queries # For address range assignment FLANNEL_ETCD_KEY="/coreos.com/network" # Any additional options that you want to pass #FLANNEL_OPTIONS=""
重新啟動flannel
systemctl daemon-reload flanneld
systemctl restart flanneld
flannel服務啟動
flannel服務需要先於docker啟動。flannel服務啟動時主要做了以下幾步的工作:
- 從etcd中獲取network的配置信息
- 划分subnet,並在etcd中進行注冊
- 將子網信息記錄到
/run/flannel/subnet.env
中
cat /run/flannel/subnet.env
cat /run/flannel/subnet.env FLANNEL_NETWORK=172.17.0.0/16 FLANNEL_SUBNET=172.17.50.1/24 FLANNEL_MTU=1472 FLANNEL_IPMASQ=false
- 之后將會有一個腳本將subnet.env轉寫成一個docker的環境變量文件
/run/flannel/docker
cat /run/flannel/docker
FLANNEL_NETWORK=172.17.0.0/16 FLANNEL_SUBNET=172.17.50.1/24 FLANNEL_MTU=1472 FLANNEL_IPMASQ=false [root@v4 ~]# cat /run/flannel/docker DOCKER_OPT_BIP="--bip=172.17.50.1/24" DOCKER_OPT_IPMASQ="--ip-masq=true" DOCKER_OPT_MTU="--mtu=1472" DOCKER_NETWORK_OPTIONS=" --bip=172.17.50.1/24 --ip-masq=true --mtu=1472 "
配置docker
systemctl show docker 將會發現 在安裝flannel后自動生成配置
DropInPaths=/usr/lib/systemd/system/docker.service.d/flannel.conf
並引用/run/flannel/docker
故在docker的systemd文件中應用對應變量 DOCKER_NETWORK_OPTIONS 即可
vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock $DOCKER_NETWORK_OPTIONS
重新啟動docker
systemctl daemon-reload
systemctl restart docker
測試
分別在兩台節點上啟動測試容器
docker run -d -it --name ip_test busybox
后網絡互通,測試通過