k8s學習筆記之六:flannel網絡配置


一、overlay網絡

 

 

1、容器網段獨立,不存在於物理世界。

2、container1是172.168.1.200,發包給172.168.1.201。container1發出的包首先默認網關到所在node1,這一步操作是很常規的。

3、包進入node1后,經過netfilters入包流程,判定匹配路由規則:

172.168.1.201/32 via 192.168.2.101 dev tun0

這條規則的特殊之處在於,tun0是一個隧道設備,這條規則中的via將會指導tun0將流入的包進行2層封裝IP頭,將實際目標IP地址設置為192.168.2.101,源地址也將改為192.168.2.100。

4、原先的IP包作為payload封裝在新的IP頭內,因為新的目標IP地址和源地址都是物理世界IP,可以經過任意網絡結構傳輸。node2收到包后,會自動拆去IP封裝得到payload中的原始IP包,然后經過netfilters判斷路由后,將法網container2 IP的包送入容器的虛擬網卡

二、flannel的配置文件的目錄

Ⅰ、指定pod的網段  kubeadm init --pod-network-cidr=10.244.0.0/16

Ⅱ、subnet.env文件目錄  /run/flannel

[root@k8s-master flannel]# cat subnet.env 
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=172.100.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

三、flannel的原理

1、Flannel為每個host分配一個subnet,容器從這個subnet中分配IP,這些IP可以在host間路由,容器間無需使用nat和端口映射即可實現跨主機通信

2、每個subnet都是從一個更大的IP池中划分的,flannel會在每個主機上運行一個叫flanneld的agent,其職責就是從池子中分配subnet

3、建立一個覆蓋網絡(overlay network),通過這個覆蓋網絡,將數據包原封不動的傳遞到目標容器Flannel使用etcd存放網絡配置、已分配

     的subnet、host的IP等信息

4、Flannel數據包在主機間轉發是由backend實現的,目前已經支持UDP、VxLAN、host-gw、AWS VPC和GCE路由等多種backend

四、flannel的架構圖

 


免責聲明!

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



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