kebernetes集羣——部署FLANNEL

kebernetes集羣——部署FLANNEL

環境:
兩臺虛擬機:
k8s-master:192.168.3.138
k8s-node1:192.168.3.178

操作系統:redhat-7.3_x86_64
ETCD:3.3.8-linux-amd64
FANNEL:0.10.0-linux-amd64

一、下載FLANNEL至服務器
1、下載二進制包,本例使用的包爲flannel-v0.10.0-linux-amd64.tar.gz
下載地址:https://github.com/coreos/flannel/releases

2、將二進制包解壓至/usr/local/。
目錄結構如下圖。注:flanneld.conf爲後續步驟添加
這裏寫圖片描述

二、配置FLANNEL及systemd、ETCD
1、在ETCD中添加鍵值

etcdctl mk /k8s/network/config '{"Network":"172.10.0.0/16", "SubnetMin":"172.10.1.0", "SubnetMax":"172.10.254.0", "Backend":{"Type":"vxlan"}}'

說明:此步驟執行條件爲已安裝ETCD,etcdctl可執行文件已拷貝至/usr/bin目錄下。FLANNEL啓動後,會從ETCD讀取此項配置,據此設置flannel網絡。“Network”定義了flannel的網段。“SubnetMin”和“SubnetMax”定義了flannel集羣網絡地址空間中最小和最大的可分配子網網段。“Backend”定義了flannel的網絡模式,默認爲非vxlan,然而vxlan模式較優;如果使用vxlan模式,flannel會使用UDP 8472端口轉發報文,否則,使用UDP 8285端口。

2、創建/usr/local/flannel-v0.10.0-linux-amd64/flanneld.conf文件,文件內容如下:

FLANNELD_ETCD_ENDPOINTS="http://192.168.3.138:2379,http://192.168.3.178:2379"
FLANNELD_ETCD_PREFIX="/k8s/network"

說明:FLANNELD_ETCD_ENDPOINTS爲ETCD集羣的服務地址。FLANNELD_ETCD_PREFIX爲ETCD中設置的flannel的配置信息的key值的前綴,flannel會讀取ETCD中key爲“{FLANNELD_ETCD_PREFIX}/config”對應的值的信息,作爲flannel網絡的配置信息,請參考上一操作步驟進行理解。

3、創建並編輯/usr/lib/systemd/system/flanneld.service文件,服務器k8s-master上的文件內容見下圖:

[Unit]
Description=Flannel Server
After=etcd.service
Before=docker.service

[Service]
Type=notify
EnvironmentFile=/usr/local/flannel-v0.10.0-linux-amd64/flanneld.conf
ExecStart=/usr/local/flannel-v0.10.0-linux-amd64/flanneld
ExecStartPost=/usr/local/flannel-v0.10.0-linux-amd64/mk-docker-opts.sh -d /run/flannel/docker_opts.env -c
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target

說明:ExecStartPost爲啓動flannel後執行的命令;這裏表示,系統啓動flannel成功後,會立即執行“/usr/local/flannel-v0.10.0-linux-amd64/mk-docker-opts.sh -d /run/flannel/docker_opts.env -c”這一條命令;這條命令根據flannel的具體配置,生成了“/run/flannel/docker_opts.env”文件;這個文件是給docker使用的,文件只有一行,是docker的啓動參數,將其加入到docker的啓動參數中,docker啓動後,就會使用flannel配置的網段,具體操作請參考下文“五、與docker集成”。
此文件的作用及配置項的含義,請百度“centos7 systemd”相關知識。

4、將FLANNEL設置爲開機啓動

systemctl enable flanneld.service

三、啓動FLANNEL

systemctl start flanneld.service 

四、查看FLANNEL
1、執行:systemctl status flanneld.service,查看flannel運行狀態。
2、使用ifconfig命令,查看是否有flannel的網絡配置

五、與docker集成
1、修改“/usr/lib/systemd/system/docker.service”文件,如下圖所示:
這裏寫圖片描述
說明:我們在docker.service文件中增加了三處地方。“After=flanneld.service”表示docker在flannel之後啓動,以確保docker啓動時存在“/run/flannel/docker_opts.env”文件。“EnvironmentFile=/run/flannel/docker_opts.env”定義了docker的環境變量文件,裏面定義了“DOCKER_OPTS”變量。在“ExecStart”配置項的值的最後增加“DOCKEROPTSdocker使 DOCKER_OPTS”指代的值作爲參數。
關於“/run/flannel/docker_opts.env”文件,請參考上文“步驟二.3”的說明。

2、重載docker的systemd配置,重啓docker,執行:

systemctl daemon-reload
systemctl restart docker.service

注意:
FLANNEL默認使用UDP 8285端口作爲虛擬網絡的轉發端口,如果使用VxLAN模式,端口爲UDP 8472。因此,如果有防火牆,需要視情況開放UDP 8285、8472端口,否則,虛擬網絡中的容器無法互通。詳情可參考https://www.hi-linux.com/posts/30481.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章