二進制文件安裝安裝flannel


二進制文件安裝安裝flannel

overlay網絡簡介

覆蓋網絡就是應用層網絡,它是面向應用層的,不考慮或很少考慮網絡層,物理層的問題。

詳細說來,覆蓋網絡是指建立在另一個網絡上的網絡。該網絡中的結點可以看作通過虛擬或邏輯鏈路而連接起來的。雖然在底層有很多條物理鏈路,但是這些虛擬或邏輯鏈路都與路徑一一對應。例如:許多P2P網絡就是覆蓋網絡,因為它運行在互連網的上層。覆蓋網絡允許對沒有IP地址標識的目的主機路由信息,例如:Freenet 和DHT(分布式哈希表)可以路由信息到一個存儲特定文件的結點,而這個結點的IP地址事先並不知道。

覆蓋網絡被認為是一條用來改善互連網路由的途徑,讓二層網絡在三層網絡中傳遞,既解決了二層的缺點,又解決了三層的不靈活!

Flannel的工作原理

Flannel實質上是一種“覆蓋網絡(overlay network)”,也就是將TCP數據包裝在另一種網絡包里面進行路由轉發和通信,目前已經支持UDP、VxLAN、AWS VPC和GCE路由等數據轉發方式。

默認的節點間數據通信方式是UDP轉發。

 
 

工作原理

數據從源容器中發出后,經由所在主機的docker0虛擬網卡轉發到flannel0虛擬網卡,這是個P2P的虛擬網卡,flanneld服務監聽在網卡的另外一端。

Flannel通過Etcd服務維護了一張節點間的路由表,詳細記錄了各節點子網網段 。

源主機的flanneld服務將原本的數據內容UDP封裝后根據自己的路由表投遞給目的節點的flanneld服務,數據到達以后被解包,然后直接進入目的節點的flannel0虛擬網卡,然后被轉發到目的主機的docker0虛擬網卡,最后就像本機容器通信一下的有docker0路由到達目標容器。

#by love19791126 107420988@qq.com
# 安裝flannel 在node01-02節點部署
# vim /etc/profile
# PATH=$PATH:/opt/kubernetes/bin

# source /etc/profile
#設置網絡 在master執行
etcdctl --ca-file=/opt/kubernetes/ssl/ca.pem --cert-file=/opt/kubernetes/ssl/server.pem --key-file=/opt/kubernetes/ssl/server-key.pem --endpoints="https://192.168.1.251:2379,https://192.168.1.252:2379,https://192.168.1.253:2379" set /coreos.com/network/config '{"Network":"172.17.0.0/16","Backend":{"Type":"vxlan"}}'
#解壓fannle 在master執行
tar zxvf flannel-v0.11.0-linux-amd64.tar.gz
#scp文件到節點 在master執行
scp flanneld mk-docker-opts.sh root@192.168.1.252:/opt/kubernetes/bin/
scp flanneld mk-docker-opts.sh root@192.168.1.253:/opt/kubernetes/bin/
#配置文件 在node01-02節點部署
vim /opt/kubernetes/cfg/flannel
FLANNEL_OPTIONS="--etcd-endpoints=https://192.168.1.251:2379,https://192.168.1.252:2379,https://192.168.1.253:2379 -etcd-cafile=/opt/kubernetes/ssl/ca.pem --etcd-certfile=/opt/kubernetes/ssl/server.pem --etcd-keyfile=/opt/kubernetes/ssl/server-key.pem"
#修改docker啟動文件 在node01-02節點部署
vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=-/run/flannel/subnet.env
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity


Delegate=yes

KillMode=process

[Install]
WantedBy=multi-user.target
#加載配置文件 在node01-02節點部署
systemctl daemon-reload
systemctl start docker
#配置flanneld文件 在node01-02節點部署
vim /opt/kubernetes/cfg/flanneld.service 
[Unit]
Description=Flannel overlay address etcd agent
After=network-online.target network.target
Before=docker.service

[Service]
Type=notify
EnvironmentFile=/opt/kubernetes/cfg/flannel
ExecStart=/opt/kubernetes/bin/flanneld --ip-masq $FLANNEL_OPTIONS
ExecStartPost=/opt/kubernetes/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.env
Restart=on-failure

[Install]
WantedBy=multi-user.target
#加載配置文件 啟動flannel 在node01-02節點部署
cp /opt/kubernetes/cfg/flanneld.service  /usr/lib/systemd/system/flanneld.service
systemctl daemon-reload
systemctl start flanneld
systemctl restart docker
#查看網絡
etcdctl --ca-file=/opt/kubernetes/ssl/ca.pem --cert-file=/opt/kubernetes/ssl/server.pem --key-file=/opt/kubernetes/ssl/server-key.pem --endpoints="https://192.168.1.251:2379,https://192.168.1.252:2379,https://192.168.1.253:2379"  ls /coreos.com/network/subnets
#獲取容器是在那個節點上
etcdctl --ca-file=/opt/kubernetes/ssl/ca.pem --cert-file=/opt/kubernetes/ssl/server.pem --key-file=/opt/kubernetes/ssl/server-key.pem --endpoints="https://192.168.1.251:2379,https://192.168.1.252:2379,https://192.168.1.253:2379"  get /coreos.com/network/subnets/172.17.98.0-24

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM