摘要:在上面這一大段話中,我們可以了解到是一個基于服務發現的系統。服務發現可理解為在一個集群內記錄各信息的數據庫,其他可通過該數據庫獲取該集群內各的信息。
概念
由我上篇博文Docker網絡解讀可知,flannel主要用來解決容器的跨主機通信問題,同時也是kubernetes主要實現網絡互通的方式,那么flannel是如何實現容器間跨主機通信的呢,下面我們引入flannel github上的一張原理圖來解讀:
要完整解讀此圖,在此之前,我們首先要了解下flannel關聯的一個重要組件"Etcd”的概念。
我們引用下Etcd的基本概念:etcd是一個高可用的鍵值存儲系統,主要用于共享配置和服務發現。etcd是由CoreOS開發并維護的,靈感來自于 ZooKeeper 和 Doozer,它使用Go語言編寫,并通過Raft一致性算法處理日志復制以保證強一致性。Raft是一個來自Stanford的新的一致性算法,適用于分布式系統的日志復制,Raft通過選舉的方式來實現一致性,在Raft中,任何一個節點都可能成為Leader。Google的容器集群管理系統Kubernetes、開源PaaS平臺Cloud Foundry和CoreOS的Fleet都廣泛使用了etcd。
在上面這一大段話中,我們可以了解到etcd是一個基于服務發現的系統。服務發現可理解為在一個Cluster集群內記錄各node信息的數據庫,其他node可通過該數據庫獲取該Cluster集群內各node的信息。
Flannel實現原理了解了以上概念之后,我們就能說明flannel的實現原理了,為了解釋清楚,我們把實現原理分為以下幾個步驟:
數據從Web App Frontend1這個容器發出經veth0網橋轉發到宿主機的docker0網橋上
docker0網橋根據數據包的目的地址進行轉發,若為非本機容器地址則轉發給Flannel0網卡處理
Flannel0網卡交給flanneld這個進程處理,flanneld通過查詢etcd,找到目的容器地址,并進行轉發
數據包到達目的主機,經flanneld解包,最后由docker0轉發到目的容器
這樣整個數據包發送過程就解釋完成了。
當然僅僅是這樣還不夠,flannel為每個在它管理下的容器賦予了一個獨立的不會重復的ip地址,這樣跨主機容器的ip地址就不會重復了,在這個前提下才能實現以上步驟的精確轉發。
總結flannel為集群內每個容器分配一個獨立的ip地址,通過etcd的服務發現功能存儲各node容器的ip信息,實現數據包的精確轉發,解決了各容器間的跨主機通信問題。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27586.html
摘要:是一個專為定制的三層網絡解決方案,主要用于解決容器的跨主機通信問題。收到的數據包被轉發到進程。查詢路由表,解封包,并將數據包發送到。然后在網絡層的源和目的均是容器的,虛擬。默認也是使用容器網絡方案,其官網也清晰的畫出了的。 前言 我們知道docker官方并沒有提供多主機的容器通信方案,單機網絡的模式主要有host,container,brige,none。none這種模式,顧名思義就是...
摘要:是一個專為定制的三層網絡解決方案,主要用于解決容器的跨主機通信問題。收到的數據包被轉發到進程。查詢路由表,解封包,并將數據包發送到。然后在網絡層的源和目的均是容器的,虛擬。默認也是使用容器網絡方案,其官網也清晰的畫出了的。 前言 我們知道docker官方并沒有提供多主機的容器通信方案,單機網絡的模式主要有host,container,brige,none。none這種模式,顧名思義就是...
摘要:今天主要針對版本進行源碼分析。外部接口的定義如下創建子網管理器負責子網的創建更新添加刪除監聽等,主要和打交道定義續約。在到期之前,子網管理器調用該方法進行續約。 前言 之前在k8s與網絡--Flannel解讀一文中,我們主要講了Flannel整體的工作原理。今天主要針對Flannel v0.10.0版本進行源碼分析。首先需要理解三個比較重要的概念: 網絡(Network):整個集群中...
摘要:今天主要針對版本進行源碼分析。外部接口的定義如下創建子網管理器負責子網的創建更新添加刪除監聽等,主要和打交道定義續約。在到期之前,子網管理器調用該方法進行續約。 前言 之前在k8s與網絡--Flannel解讀一文中,我們主要講了Flannel整體的工作原理。今天主要針對Flannel v0.10.0版本進行源碼分析。首先需要理解三個比較重要的概念: 網絡(Network):整個集群中...
摘要:今天主要針對版本進行源碼分析。外部接口的定義如下創建子網管理器負責子網的創建更新添加刪除監聽等,主要和打交道定義續約。在到期之前,子網管理器調用該方法進行續約。 前言 之前在k8s與網絡--Flannel解讀一文中,我們主要講了Flannel整體的工作原理。今天主要針對Flannel v0.10.0版本進行源碼分析。首先需要理解三個比較重要的概念: 網絡(Network):整個集群中...
閱讀 2310·2021-11-22 12:01
閱讀 1983·2021-11-12 10:34
閱讀 4508·2021-09-22 15:47
閱讀 2827·2019-08-30 15:56
閱讀 2861·2019-08-30 15:53
閱讀 2398·2019-08-30 13:53
閱讀 3371·2019-08-29 15:35
閱讀 3119·2019-08-29 12:27