背景
如果根據(jù)《K8S集群搭建——基于CentOS 7系統(tǒng)》配置flannel公壤,那么backend通信方式默認(rèn)為UDP早歇。這里就有一個問題,通過UDP方式论衍,數(shù)據(jù)包的轉(zhuǎn)發(fā)是在用戶態(tài)奶是,因此性能上會有損失,假如數(shù)據(jù)包的轉(zhuǎn)發(fā)能在內(nèi)核完成竣灌,這樣就能少一次數(shù)據(jù)報文的拷貝聂沙,性能也就能上去,這就是VXLAN通信方式初嘹。
配置vxlan backend
1及汉、master節(jié)點
和之前類似,同樣使用etcdctl命令屯烦,增加對backend的定義坷随,指定為vxlan即可,
etcdctl set /flannel/network/config '{"Network":"10.108.0.0/16","Backend": {"Type": "vxlan"}}'
這里我們設(shè)置flannel子網(wǎng)使用10.108網(wǎng)段驻龟。
設(shè)置完網(wǎng)絡(luò)配置后温眉,重啟flanneld服務(wù)即可,同時因為docker依賴于flannel網(wǎng)絡(luò)翁狐,因此docker也需要重啟类溢,但是要放到后面,
systemctl restart flanneld docker
兩者執(zhí)行內(nèi)容大致如下:
- flannel從etcd數(shù)據(jù)庫中獲取network的配置信息
- flannel劃分子網(wǎng)subnet露懒,并在etcd中進(jìn)行注冊
- flannel將子網(wǎng)信息記錄到/run/flannel/subnet.env中
- docker啟動時加載subnet.env中的網(wǎng)絡(luò)配置
因此闯冷,服務(wù)重啟后我們就能看到flannel.1這個網(wǎng)絡(luò)設(shè)備,以及docker0網(wǎng)橋的ip已經(jīng)處于我們配置的網(wǎng)段中懈词。
[root@CentOS-7-4 ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>? mtu 1500
? ? ? ? inet 10.108.14.1? netmask 255.255.255.0? broadcast 0.0.0.0
? ? ? ? ether 02:42:5c:a0:56:f9? txqueuelen 0? (Ethernet)
? ? ? ? RX packets 0? bytes 0 (0.0 B)
? ? ? ? RX errors 0? dropped 0? overruns 0? frame 0
? ? ? ? TX packets 0? bytes 0 (0.0 B)
? ? ? ? TX errors 0? dropped 0 overruns 0? carrier 0? collisions 0
flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>? mtu 1450
? ? ? ? inet 10.108.14.0? netmask 255.255.255.255? broadcast 0.0.0.0
? ? ? ? inet6 fe80::1007:9aff:fe3d:2bda? prefixlen 64? scopeid 0x20<link>
? ? ? ? ether 12:07:9a:3d:2b:da? txqueuelen 0? (Ethernet)
? ? ? ? RX packets 0? bytes 0 (0.0 B)
? ? ? ? RX errors 0? dropped 0? overruns 0? frame 0
? ? ? ? TX packets 0? bytes 0 (0.0 B)
? ? ? ? TX errors 0? dropped 8 overruns 0? carrier 0? collisions 0
2蛇耀、node節(jié)點
對于node節(jié)點,同樣也是重啟flanneld和docker進(jìn)程即可坎弯,
systemctl restart flanneld docker
連通性測試
分別在兩個node上起一個容器纺涤,互相ping對方ip译暂,能ping通即配置正常。
常見問題
1洒琢、docker0網(wǎng)橋設(shè)備ip不在我們設(shè)置的網(wǎng)段
這一般就是沒有重啟docker導(dǎo)致的秧秉,或者沒有在flannel后重啟。
2衰抑、使用etcdctl命令更新flannel子網(wǎng)信息象迎,重啟flannld進(jìn)程,配置不生效
CentOS 7自帶的flannel可能有些問題呛踊,重啟服務(wù)確實無法更新配置砾淌,需要先將flannl.1這個網(wǎng)絡(luò)設(shè)備刪除,重啟后才會生效谭网。
ip link del flannel.1;
systemctl restart flanneld docker
后續(xù)使用最版本的flannel驗證一下汪厨。