真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

kubernetes集群安裝指南:Flannel網(wǎng)絡(luò)插件部署-創(chuàng)新互聯(lián)

Flannel 是CNI陣營里標準的網(wǎng)絡(luò)插件,在沒有嚴格的網(wǎng)絡(luò)的要求下,它通常作為kubernetes集群里網(wǎng)絡(luò)互聯(lián)比較常用的方案,當然還有其他網(wǎng)絡(luò)方案,比如calico,weave,mxvlan等等,這里主要使用到flannel作為kubernetes的網(wǎng)絡(luò)方案;

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的袁州網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

1 部署準備

kubernetes 要求集群內(nèi)各節(jié)點(包括 master 節(jié)點)能通過 Pod 網(wǎng)段互聯(lián)互通。flannel 使用 vxlan 技術(shù)為各節(jié)點創(chuàng)建一個可以互通的 Pod 網(wǎng)絡(luò),使用的端口為 UDP 8472(需要開放該端口,如公有云 AWS 等)。

flanneld 第一次啟動時,從 etcd 獲取配置的 Pod 網(wǎng)段信息,為本節(jié)點分配一個未使用的地址段,然后創(chuàng)建 flannedl.1 網(wǎng)絡(luò)接口(也可能是其它名稱,如 flannel1 等)。

flannel 將分配給自己的 Pod 網(wǎng)段信息寫入 /run/flannel/docker 文件,docker 后續(xù)使用這個文件中的環(huán)境變量設(shè)置 docker0 網(wǎng)橋,從而從這個地址段為本節(jié)點的所有 Pod 容器分配 IP。

環(huán)境變量定義
#################### 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
1.2 下載和分發(fā) kubernetes 二進制文件

登陸devops機器,訪問flannel github 官方地址下載穩(wěn)定的 realease 包至本機;

wget  $DOWNLOAD_URL -P $SOFTWARE

將flannel 軟件包分發(fā)到集群所有節(jié)點服務器;

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

2 安裝flannel網(wǎng)絡(luò)插件

2.1 安裝flannel二進制文件
### 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
2.3 分發(fā) 證書文件
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
  • flannel開啟了HTTPS訪問所以需要證書支持;
  • flannel不需要訪問apiserver,因此不需kubeconfig文件認證;
2.4 向 etcd 寫入集群 Pod 網(wǎng)段信息
### 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"}}'
  • flanneld 當前版本 (v0.11.0) 不支持 etcd v3,故使用 etcd v2 API 寫入配置 key 和網(wǎng)段數(shù)據(jù);
  • 寫入的 Pod 網(wǎng)段 ${CLUSTER_CIDR} 地址段(如 /16)必須小于 SubnetLen,必須與 kube-controller-manager 的 --cluster-cidr 參數(shù)值一致;
2.5 創(chuàng)建flannel 啟動服務
cat >/usr/lib/systemd/system/flanneld.service<
  • mk-docker-opts.sh 腳本將分配給 flanneld 的 Pod 子網(wǎng)段信息寫入 /run/flannel/docker 文件,后續(xù) docker 啟動時使用這個文件中的環(huán)境變量配置 docker0 網(wǎng)橋;
  • flanneld 使用系統(tǒng)缺省路由所在的接口與其它節(jié)點通信,對于有多個網(wǎng)絡(luò)接口(如內(nèi)網(wǎng)和公網(wǎng))的節(jié)點,可以用 -iface 參數(shù)指定通信接口;
  • flanneld 運行時需要 root 權(quán)限;
  • -ip-masq: flanneld 為訪問 Pod 網(wǎng)絡(luò)外的流量設(shè)置 SNAT 規(guī)則,同時將傳遞給 Docker 的變量 --ip-masq(/run/flannel/docker 文件中)設(shè)置為 false,這樣 Docker 將不再創(chuàng)建 SNAT 規(guī)則; Docker 的 --ip-masq 為 true 時,創(chuàng)建的 SNAT 規(guī)則比較“暴力”:將所有本節(jié)點 Pod 發(fā)起的、訪問非 docker0 接口的請求做 SNAT,這樣訪問其他節(jié)點 Pod 的請求來源 IP 會被設(shè)置為 flannel.1 接口的 IP,導致目的 Pod 看不到真實的來源 Pod IP。 flanneld 創(chuàng)建的 SNAT 規(guī)則比較溫和,只對訪問非 Pod 網(wǎng)段的請求做 SNAT。
2.6 啟動flannel服務并檢查運行狀態(tài)

啟動flannel服務并檢查

sudo systemctl start flanneld 
sudo systemctl status  flanneld |grep 'Active:'

確保狀態(tài)為 active (running),否則查看日志,確認原因:

sudo journalctl -u  flanneld
2.7 檢查分配給各 flanneld 的 Pod 網(wǎng)段信息
查看集群 Pod 網(wǎng)段(/20):
### 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)段對應的節(jié)點 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"}}
  • 192.168.20.24指節(jié)點master-ks8-n03;
  • VtepMAC 為master-ks8-n03節(jié)點的 flannel.1 網(wǎng)卡 MAC 地址;
2.8 檢查節(jié)點 flannel 網(wǎng)絡(luò)信息

隨機登陸一臺master節(jié)點,這里以master-ks8-n03為例

$ ifconfig

eth0: flags=4163  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  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  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
  • flannel.1 網(wǎng)卡的地址為分配的 Pod 子網(wǎng)段的第一個 IP(.0),且是 /32 的地址;

查看路由

$ 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é)點 Pod 網(wǎng)段請求都被轉(zhuǎn)發(fā)到 flannel.1 網(wǎng)卡;
  • flanneld 根據(jù) etcd 中子網(wǎng)段的信息,如 ${FLANNEL_ETCD_PREFIX}/subnets/172.30.80.0-21 ,來決定進請求發(fā)送給哪個節(jié)點的互聯(lián) IP;
2.9 驗證各節(jié)點能通過 Pod 網(wǎng)段互通

在各節(jié)點上部署 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機器上執(zhí)行。正常情況下,到集群內(nèi)每個節(jié)點都是互通的,如果有不通情況下,檢查防火墻設(shè)置;


安裝完flannel網(wǎng)絡(luò)插件后,整個集群到這里算大功告成,后面還需要安裝相關(guān)插件,如dashboard可視化,dns解析,以及監(jiān)控等等;關(guān)于flannel腳本可以從此處獲取

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


分享名稱:kubernetes集群安裝指南:Flannel網(wǎng)絡(luò)插件部署-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://weahome.cn/article/ddpchp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部