容器網絡相關筆記01

Docker0 Bridge 主機在安裝docker服務時候,會通過主機的物理/虛擬網卡自動創建docker0 bridge橋接器(相當於網絡交換機),為主機內各個容器通信提供通道,docker0 bridge 提供完整的網絡結構。 容器啟動後會自動創建veth-pair虛擬設備接口到容器內的eth0虛擬網卡,此時容器已分配完成docker0下的ip,進而會向主機的eth0網卡添加iptables規則到當前容器。

SNAT(Source Network Address Translation) 源網絡地址轉換,容器中可用於相同VPC下不同主機之間容器網絡互通:需要通過SNAT協議將容器內ip轉換為主機的內網ip到目的主機下再進行DNAT,從而到達目的容器

OVERLAY NETWORK 疊加網絡是建立在另一個網絡之上並由其基礎設施支持的電信網絡。疊加網絡通過將一個數據包封裝在另一個數據包中,將網絡服務與底層基礎設施分離。將封裝的數據包轉發到端點後,會將其解封。大多數疊加網絡運行在公網之上,比如虛擬專用網(VPN)、對等(P2P)網絡、內容遞送網絡(CDN)、諸如Skype的IP語音(VoIP)服務和非本地軟件定義的網絡

CNI(Container Network Interface) 由一組用於配置Linux容器的網絡接口的規範和庫組成,同時還包含了一些插件。CNI僅關心容器創建時的網絡分配,和當容器被刪除時釋放網絡資源,網絡插件如下: 詳情

  • flannel: 通過給每臺宿主機分配一個子網的方式為容器提供虛擬網絡,它基於Linux TUN/TAP,使用UDP封裝IP包來創建overlay網絡,並藉助etcd維護網絡的分配情況 詳情
  • calico: 純三層的數據中心網絡方案(不需要 Overlay),並且與 OpenStack、Kubernetes、AWS、GCE 等 IaaS 和容器平臺都有良好的集成,Calico 在每一個計算節點利用 Linux Kernel 實現了一個高效的 vRouter 來負責數據轉發,而每個 vRouter 通過 BGP 協議負責把自己上運行的 workload 的路由信息像整個 Calico 網絡內傳播——小規模部署可以直接互聯,大規模下可通過指定的 BGP route reflector 來完成。 這樣保證最終所有的 workload 之間的數據流量都是通過 IP 路由的方式完成互聯的。Calico 節點組網可以直接利用數據中心的網絡結構(無論是 L2 或者 L3),不需要額外的 NAT,隧道或者 Overlay Network 詳情
  • Weave: 多主機容器網絡方案,支持去中心化的控制平面,各個host上的wRouter間通過建立Full Mesh的TCP鏈接,並通過Gossip來同步控制信息。這種方式省去了集中式的K/V Store,能夠在一定程度上減低部署的複雜性,Weave將其稱為“data centric”,而非RAFT或者Paxos的“algorithm centric” 詳情

本文由博客一文多發平臺 OpenWrite 發佈!


分享到:


相關文章: