Flannel 是CNI陣營里標(biāo)準(zhǔn)的網(wǎng)絡(luò)插件,在沒有嚴(yán)格的網(wǎng)絡(luò)的要求下,它通常作為kubernetes集群里網(wǎng)絡(luò)互聯(lián)比較常用的方案,當(dāng)然還有其他網(wǎng)絡(luò)方案,比如calico,weave,mxvlan等等,這里主要使用到flannel作為kubernetes的網(wǎng)絡(luò)方案;
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的袁州網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!kubernetes 要求集群內(nèi)各節(jié)點(diǎn)(包括 master 節(jié)點(diǎn))能通過 Pod 網(wǎng)段互聯(lián)互通。flannel 使用 vxlan 技術(shù)為各節(jié)點(diǎn)創(chuàng)建一個(gè)可以互通的 Pod 網(wǎng)絡(luò),使用的端口為 UDP 8472(需要開放該端口,如公有云 AWS 等)。
flanneld 第一次啟動(dòng)時(shí),從 etcd 獲取配置的 Pod 網(wǎng)段信息,為本節(jié)點(diǎn)分配一個(gè)未使用的地址段,然后創(chuàng)建 flannedl.1 網(wǎng)絡(luò)接口(也可能是其它名稱,如 flannel1 等)。
flannel 將分配給自己的 Pod 網(wǎng)段信息寫入 /run/flannel/docker 文件,docker 后續(xù)使用這個(gè)文件中的環(huán)境變量設(shè)置 docker0 網(wǎng)橋,從而從這個(gè)地址段為本節(jié)點(diǎn)的所有 Pod 容器分配 IP。
#################### Variable parameter setting ######################
FLANNEL_INSTALL_PATH=/data/apps/k8s/networks/flannel
SOFTWARE=/root/software
VERSION=v0.11.0
PACKAGE=flannel-${VERSION}-linux-amd64.tar.gz
DOWNLOAD_URL=https://github.com/devops-apps/download/raw/master/network/$PACKAGE
ETCD_ENPOINTS=https://10.10.10.22:2379,https://10.10.10.23:2379,https://10.10.10.24:2379
FLANNEL_ETCD_PREFIX=/k8s/network
CA_DIR=/etc/k8s/ssl
NETWORK_SUBNET=172.16.0.0/20
IFACE=eth0
登陸devops機(jī)器,訪問flannel github 官方地址下載穩(wěn)定的 realease 包至本機(jī);
wget $DOWNLOAD_URL -P $SOFTWARE
將flannel 軟件包分發(fā)到集群所有節(jié)點(diǎn)服務(wù)器;
sudo ansible master_k8s_vgs -m copy -a " src=${SOFTWARE}/$PACKAGE dest=${SOFTWARE}/" -b
sudo ansible worker_k8s_vgs -m copy -a " src=${SOFTWARE}/$PACKAGE dest=${SOFTWARE}/" -b
### 1.Check if the install directory exists.
if [ ! -d $FLANNEL_INSTALL_PATH/bin ]; then
mkdir -p $FLANNEL_INSTALL_PATH/bin
fi
### 2.Install binary of flannel.
if [ ! -f "$SOFTWARE/flannel-${VERSION}-linux-amd64.tar.gz" ]; then
wget $DOWNLOAD_URL -P $SOFTWARE >>/tmp/install.log 2>&1
fi
cd $SOFTWARE && tar -xzf flannel-${VERSION}-linux-amd64.tar.gz -C ./
cp -fp ${SOFTWARE}/{flanneld,mk-docker-opts.sh} ${FLANNEL_INSTALL_PATH}/bin
ln -sf ${FLANNEL_INSTALL_PATH}/bin/{flanneld,mk-docker-opts.sh} /usr/local/bin
chmod -R 755 $FLANNEL_INSTALL_PATH
cd ${CA_DIR}
sudo ansible master_k8s_vgs -m copy -a " src=ca.pem dest=${CA_DIR}/" -b
sudo ansible master_k8s_vgs -m copy -a " src=flannel.pem dest=${CA_DIR}/" -b
sudo ansible master_k8s_vgs -m copy -a " src=flannel-key.pem dest=${CA_DIR}/" -b
### Create network subnet of flannel .
etcdctl --endpoint=$ETCD_ENPOINTS \
--ca-file=${CA_DIR}/ca.pem \
--cert-file=${CA_DIR}/etcd.pem \
--key-file=${CA_DIR}/etcd-key.pem \
mkdir $FLANNEL_ETCD_PREFIX
etcdctl --endpoints=$ETCD_ENPOINTS \
--ca-file=${CA_DIR}/ca.pem \
--cert-file=${CA_DIR}/etcd.pem \
--key-file=${CA_DIR}/etcd-key.pem \
mk ${FLANNEL_ETCD_PREFIX}/config \
'{"Network":"'${NETWORK_SUBNET}'","SubnetLen":24,"Backend":{"Type":"$TYPE"}}'
cat >/usr/lib/systemd/system/flanneld.service<<EOF
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
After=etcd.service
Before=docker.service
[Service]
Type=notify
ExecStart=${FLANNEL_INSTALL_PATH}/bin/flanneld \\
-etcd-cafile=${CA_DIR}/ca.pem \\
-etcd-certfile=${CA_DIR}/flannel.pem \\
-etcd-keyfile=${CA_DIR}/flannel-key.pem \\
-etcd-endpoints=${ETCD_ENPOINTS} \\
-etcd-prefix=${FLANNEL_ETCD_PREFIX} \\
-iface=${IFACE} \\
-ip-masq
ExecStartPost=${FLANNEL_INSTALL_PATH}/bin/mk-docker-opts.sh \\
-k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=always
RestartSec=5
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
RequiredBy=docker.service
EOF
啟動(dòng)flannel服務(wù)并檢查
sudo systemctl start flanneld
sudo systemctl status flanneld |grep 'Active:'
確保狀態(tài)為 active (running),否則查看日志,確認(rèn)原因:
sudo journalctl -u flanneld
### Create network subnet of flannel .
etcdctl --endpoint=$ETCD_ENPOINTS \
--ca-file=${CA_DIR}/ca.pem \
--cert-file=${CA_DIR}/etcd.pem \
--key-file=${CA_DIR}/etcd-key.pem \
get ${FLANNEL_ETCD_PREFIX}/config
輸出:
{"Network":"172.20.0.0/20", "SubnetLen": 21, "Backend": {"Type": "vxlan"}}
查看已分配的 Pod 子網(wǎng)段列表(/24):
etcdctl --endpoints=$ETCD_ENPOINTS \
--ca-file=${CA_DIR}/ca.pem \
--cert-file=${CA_DIR}/etcd.pem \
--key-file=${CA_DIR}/etcd-key.pem \
ls ${FLANNEL_ETCD_PREFIX}/subnets
輸出(結(jié)果視部署情況而定):
/k8s/network/subnets/172.16.1.0-24
/k8s/network/subnets/172.16.3.0-24
/k8s/network/subnets/172.16.13.0-24
/k8s/network/subnets/172.16.15.0-24
/k8s/network/subnets/172.16.8.0-24
查看某一 Pod 網(wǎng)段對應(yīng)的節(jié)點(diǎn) IP 和 flannel 接口地址:
etcdctl --endpoints=$ETCD_ENPOINTS \
--ca-file=${CA_DIR}/ca.pem \
--cert-file=${CA_DIR}/etcd.pem \
--key-file=${CA_DIR}/etcd-key.pem \
ls ${FLANNEL_ETCD_PREFIX}/subnets
輸出(結(jié)果視部署情況而定):
{"PublicIP":"192.168.20.24","BackendType":"vxlan","BackendData":{"VtepMAC":"a6:92:04:07"}}
隨機(jī)登陸一臺master節(jié)點(diǎn),這里以master-ks8-n03為例
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.20.24 netmask 255.255.255.0 broadcast 192.168.20.255
ether 00:50:56:b9:9c:b1 txqueuelen 1000 (Ethernet)
RX packets 305607 bytes 52151972 (49.7 MiB)
RX errors 0 dropped 1176 overruns 0 frame 0
TX packets 355321 bytes 58794327 (56.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.10.24 netmask 255.255.255.0 broadcast 10.10.10.255
ether 00:50:56:b9:2c:1e txqueuelen 1000 (Ethernet)
RX packets 216915716 bytes 36273314852 (33.7 GiB)
RX errors 0 dropped 1173 overruns 0 frame 0
TX packets 207708912 bytes 33334846046 (31.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450
inet 172.16.1.0 netmask 255.255.255.255 broadcast 0.0.0.0
ether a6:92:cc:85:04:07 txqueuelen 0 (Ethernet)
RX packets 260862 bytes 27280155 (26.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 309429 bytes 36792200 (35.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
查看路由
$ ip route show |grep flannel.1
172.16.3.0/24 via 172.16.3.0 dev flannel.1 onlink
172.16.8.0/24 via 172.16.8.0 dev flannel.1 onlink
172.16.13.0/24 via 172.16.13.0 dev flannel.1 onlink
172.16.15.0/24 via 172.16.15.0 dev flannel.1 onlink
在各節(jié)點(diǎn)上部署 flannel 后,檢查是否創(chuàng)建了 flannel 接口(名稱可能為 flannel0、flannel.0、flannel.1 等):這里為flannel.1
ansible master_k8s_vgs -m shell -a ''ping 172.16.1.1 -c 3 && ping 172.16.3.1 -c 3 \
&& ping 172.16.8.1 -c 3 && ping 172.16.13.1 -c 3 && ping 172.16.15.1 -c 3"
上述命令在devops機(jī)器上執(zhí)行。正常情況下,到集群內(nèi)每個(gè)節(jié)點(diǎn)都是互通的,如果有不通情況下,檢查防火墻設(shè)置;
安裝完flannel網(wǎng)絡(luò)插件后,整個(gè)集群到這里算大功告成,后面還需要安裝相關(guān)插件,如dashboard可視化,dns解析,以及監(jiān)控等等;關(guān)于flannel腳本可以從此處獲取
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
名稱欄目:kubernetes集群安裝指南:Flannel網(wǎng)絡(luò)插件部署-創(chuàng)新互聯(lián)
本文路徑:http://vcdvsql.cn/article48/ddpchp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、建站公司、微信公眾號、網(wǎng)站收錄、網(wǎng)站建設(shè)、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容