Kubernetes网络方案Flannel的学习笔记
?
- 說明
- 工作原理
- 已經支持的Backends
- 處于試驗階段的Backends
- 其它內容?
- 參考
說明
Flannel是Kubernets最早期的網絡方案之一,也是現在常用的方案之一。當時只了解到它采用overlay的方式,于是重點學習calico了,后來發現用到flannel的公司還挺多,需要系統學習下。
工作原理
原理很簡單,在每一個需要使用Flannel網絡的機器上都運行有一個名為flanneld的服務。flanneld為所在的機器申請到一小段虛擬網絡的地址空間,并負責將通過這些虛擬地址發送的報文封裝后,用宿主機的網絡送出。flanneld還要負責解讀宿主機網絡收到發送給虛擬網絡的中的地址的報文。
虛擬網絡地址的分配情況直接寫入etcd,或者通過kubernetes的api寫入。
核心是:Flannel是怎樣通過宿主機網絡傳遞虛擬機網絡中的報文的? Flannel支持幾種不同的方式,把它們叫做Backends。
已經支持的Backends
@2018-10-09 16:47:10
最推薦使用的是vxlan,使用linux kernel的vxlan實現。vxlan backend的配置項有以下幾個:
Type: string,backend類型,就是"vxlan" VNI: number,vxlan協議中的vni編號,不同的vni號碼代表不同網段,類似vlan號,默認是1 Port: number, 宿主機的udp端口,用來發送封裝后的報文,使用linux內核默認配置,8472 GBP: boolean,是否使用vxlan Group Policy,默認false DirectRouting: boolean,是否啟用直接路由,當兩臺宿主機位于同一個網段時,不封裝通過路由直接送達,默認falseGBP特性,參考:vxlan: Group Policy extension。
其次是host-gw的方式,通過直接路由的方式傳送虛擬網絡報文。這種方式要求所有宿主機是二層直達的(中間不經過路由),原理和vxlan中的DirectRouting相同。
Vxlan DriectRouting是能夠直接路由的時候采用直接路由的方式,否則就通過vxlan。 Host-gw要求所有宿主機都支持直接路由方式(在同一個二層網絡中),并全部采用直接路由的方式。
host-gw的配置項只有一個:
Type: string,backend類型,就是"host-gw"udp只建議調試時使用,或者另外兩種方式不能使用的時候(譬如宿主機內核不支持vxlan)使用。
Type:string,backend類型,就是"udp" Port: number,宿主機udp端口,默認8285處于試驗階段的Backends
@2018-10-09 16:47:23
AliVPC,阿里云的VPC
Type (string): allocAlloc,這個沒明白怎么回事,說是”performs subnet allocation with no forwarding of data packets”:
Type (string): allocAWS VPC,AWS的VPC:
Type (string): aws-vpc RouteTableID (string): [optional] The ID of the VPC route table to add routes to.GCE,Google的云服務:
Type (string): gceIPIP,使用內核實現的ipip隧道:
Type (string): ipip DirectRouting (Boolean):IPSec,使用內核實現的IpSec:
Type (string): ipsec PSK (Boolean): Required. UDPEncap (string): Optional ESPProposal (string): Optional其它內容?
Flannel是一個特別簡單的網絡方案,文檔也就特別簡單。把上面的backends梳理完,文檔基本上就全讀完了。
Kubernetes1.12從零開始(五):自己動手部署Kubernetes中講到,Kubernetes設計的時候,就降低了對網絡模型的要求。所以Flannel這樣簡單的網絡方案,可以用于Kubernetes。
不過要注意,Flannel這個項目小而精,缺少了一些功能。最直接的缺陷就是:不支持ACL,即Kubernetes中的Network Policy。
根據Flannel項目Readme中的表述,這個項目似乎也不打算支持”network policy”:
Flannel is focused on networking. For network policy, other projects such as Calico can be used.有意思一的是Calico啟動了一個Canal項目,糅合了Calico和Flannel。Network policy功能有calico提供,network功能用flannel提供,也是醉了。
Flannels, Canals and Tigers, Oh My! — Big News in the Land of Project Calico介紹了Canal的誕生過程。
參考
?
轉載于:https://www.cnblogs.com/lijiaocn/p/9769746.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Kubernetes网络方案Flannel的学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ADSL(Asymmetric Digi
- 下一篇: 分布式高并发