網絡環境:
docker需要開啓防火牆
systemctl restart firewalld.service && systemctl enable firewalld.service
master 安裝:
安裝 etcd 及配置
[root@master ~]# yum install -y etcd
[root@master ~]# systemctl restart etcd
配置開機啓動: [root@master ~]# systemctl enable etcd
配置etcd
[root@master ~]# vim /etc/etcd/etcd.conf
修改
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
爲
ETCD_LISTEN_CLIENT_URLS="http://192.168.10.11:2379,http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.10.11:2379"
etcd 設置網段(這個網段將會分配給 flannel0 網卡):
[root@master ~]# etcdctl mk /atomic.io/network/config '{"Network":"172.20.0.0/16","SubnetMin":"172.20.1.0","SubnetMax":"172.20.254.0"}'
[root@master ~]# etcdctl get /atomic.io/network/config
[root@master ~]# etcdctl get /
/atomic.io/network/config #此文件對應/etc/sysconfig/flannel中的FLANNEL_ETCD_PREFIX
[root@master ~]# systemctl restart etcd #創建網段後,需要重啓etcd,否則後面不能啓動flannel
安裝flannel
[root@master ~]# yum install -y flannel
配置flannel:
[root@master ~]# vim /etc/sysconfig/flanneld
啓動flannel:
[root@master ~]# systemctl restart flanneld
#修改配置文件後,需要重新加載
systemctl daemon-reload
配置開機啓動
[root@master ~]# systemctl enable flanneld
#日誌查看
flanneld -alsologtostderr
我們查看網橋,看到了flannel0,而且ip的地址端是我們自己指定的172.20.0.0/16網段中的地址段172.20.75.0/24
而且還生成了配置文件/run/flannel/subnet.env和/run/flannel/docker存儲了這個服務器端信息。
啓動flanneld後,會有一張網卡產生:而且此網卡的地址就是使用etcdctl mk定義的網段地址。
–bip=172.20.75.1/24這個參數,它限制了所在節點容器獲得的IP範圍。
這個IP範圍是由flannel自動分配的,由flannel通過保存在etcd服務中的記錄確保它們不會重複
錯誤的解決辦法:
Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:2379:connect: connection refused
參考:https://www.cnblogs.com/lkun/p/9486156.html
安裝docker
此處不再贅述,可以直接參考此帖:https://blog.csdn.net/qq_39626154/article/details/82753412
啓動docker
[root@master ~]# systemctl start docker
[root@master ~]# systemctl enable docker
查看docker0和flannel0的網段信息,發現目前還不在一個網段:
[root@master ~]# ifconfig docker0 && ifconfig flannel0
我們直接運行ps-ef|grep docker查看我們的網卡信息同docker壓根沒有關聯上。
解決辦法:在/usr/lib/systemd/system/docker.service中的[service]模塊添加修改如下內容:
#set flannel info
EnvironmentFile=-/run/flannel/docker
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS
然後重啓docker再次查看,發現docker0和flannel0在同一個網段了:
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker
[root@master ~]# ifconfig docker0 && ifconfig flannel0
查看docker進程,已經綁定上了bip的ip
slave安裝:
安裝flannel
[root@slave01 ~]# yum -y install flannel
配置flannel:
[root@slave01 ~]# vim /etc/sysconfig/flanneld
啓動flannel:
[root@slave01 ~]# systemctl enable flanneld
[root@slave01 ~]# systemctl restart flanneld
如果啓動flanneld停頓的時間比較久,並且有日誌報錯,那麼可能是etcd服務器的防火牆問題
查看生成的配置文件:獲取到了etcd配置網段的IP信息
同樣給slave01主機上安裝docker,查看docker0與flannel0網卡信息
查看flannel進程信息:
啓動報如下錯誤,說明和etcd服務器的連接有問題:
解決辦法:master主機etcd開啓防火牆端口2379:firewall-cmd --add-port=2379/tcp
[root@master ~]# firewall-cmd --add-port=2379/tcp
success
同樣修改docker的啓動服務文件:/usr/lib/systemd/system/docker.service
啓動docker:
查看docker進程和ip情況:
測試:在2臺主機上分別運行centos容器
[root@master ~]# docker run -it --name host1.test centos /bin/bash
[root@slave01 ~]# docker run -it --name host2.test centos /bin/bash
ifconfig查看IP信息,可以看到兩個容器都獲取到相應的flannel0網卡下發的IP地址。
如果沒有該命令需要執行安裝命令:yum install net-tools -y
測試聯通性:正常
先要放開兩臺主機訪問的防火牆:
[root@master ~]# iptables -I INPUT -s 192.168.10.0/24 -j ACCEPT
[root@slave01 ~]# iptables -I INPUT -s 192.168.10.0/24 -j ACCEPT