摘要:網(wǎng)絡(luò)結(jié)構(gòu)上圖為的網(wǎng)絡(luò)模型,大體上可分為和兩個組件其中運行在每臺宿主機上主要負責與交互實現(xiàn)插件邏輯配置底層進程實現(xiàn)具體的網(wǎng)絡(luò)功能組件是與交互的核心邏輯以常用的為例該邏輯即是實現(xiàn)框架下所規(guī)定的種種接口實現(xiàn)與的消息交互關(guān)于和請查看與框架與實現(xiàn)同
Contiv網(wǎng)絡(luò)結(jié)構(gòu)
上圖為Contiv的網(wǎng)絡(luò)模型,大體上可分為Master和Host Agent兩個組件,其中Plugin運行在每臺宿主機上, 主要負責1. 與Container Runtime交互實現(xiàn)插件邏輯. 2. 配置底層 open vswitch進程實現(xiàn)具體的網(wǎng)絡(luò)功能.
Contiv-Plugin組件 Plugin LogicPlugin Logic 是與Container Runtime交互的核心邏輯, 以常用的 docker 為例, 該邏輯即是實現(xiàn)CNM框架下所規(guī)定的種種接口, 實現(xiàn)與Libnetwork的消息交互, 關(guān)于CNM和Libnetwork, 請查看Libnetwork與CNM框架與實現(xiàn)
Distributed KV Store同 Master 中的作用一樣, 下文將以etcd表示該數(shù)據(jù)庫
Linux Host Routing/Switching待完成
ARP/DNS Responder待完成
Service LB待完成
Route Distribution待完成
Contiv-Plugin源碼分析 plugin daemon 初始化Plugin 進程的入口在 /netplugin/netd.go , 主要完成命令行參數(shù)的解析. 然后創(chuàng)建一個Agent
Agent的創(chuàng)建入口在 /netplugin/agent/agent.go,
Cluster 初始化
創(chuàng)建一個名為 objdbClient 的 etcd client, 它的作用是處理cluster級別的消息, 比如一臺宿主機上的Plugin進程啟動后需要讓其他宿主機上的Master進程和Plugin進程感知到自己的存在,那么就需要通過這個client向etcd寫入自己運行的服務(wù), 這個過程也稱為Service注冊, 同時反過來,Plugin進程也可以通過該client偵測到其他plugin的啟動, 這個過程稱為 Peer Discovery. 言而言之,cluster 初始化使得plugin進程成為整個系統(tǒng)的一部分.
Netplugin 初始化
Netplugin的初始化主要包括State driver的初始化和Network driver的初始化.
State driver的初始化主要是從etcd中獲取Master進程寫入的轉(zhuǎn)發(fā)模式(Fwd Mode)和私有子網(wǎng)(PvtSubnet)等信息并校驗和Plugin進程啟動時的命令行一致, 如果沒有得到, 說明 Master進程還沒有啟動, 需要等待.
Network driver的初始化, 實際上是底層ovs的驅(qū)動的初始化, Plugin進程需要等待ovs進程連接上來.
Container runtime plugin 初始化
這部分要根據(jù)插件模式(k8s 或者 docker) 進行插件邏輯的初始化, k8s對應(yīng)CNI模型的插件. docker對應(yīng)CNM模型的插件
以docker為例, 這部分將啟動一個Http Server, 用以響應(yīng) docker 進程發(fā)送過來的各類消息, 比如CreateNetwork, CreateEndpoint等等
Contiv是跨主機容器網(wǎng)絡(luò), 因此, 當某臺宿主機上的Plugin進程啟動后, 需要將系統(tǒng)中其他節(jié)點已經(jīng)創(chuàng)建的Contiv網(wǎng)絡(luò)和容器加入網(wǎng)絡(luò)的情況同步到本地, 這個過程就是狀態(tài)恢復(fù). 除了基本的network和endpoint信息, 可以看到這一步還需要同步BGPEGPServiceLBSvcProvider這些信息.
Post初始化完成兩項工作.
啟動Cluster 初始化時創(chuàng)建的 objdbClient, 使其完成Service注冊和并開始Peer Discovery.
啟動一個REST Http Server, 開放9090端口, 用戶可以通過這個端口查看Plugin的一些工作情況
啟動外部事件響應(yīng)循環(huán)
在前面, Plugin進程從etcd中同步當前整個系統(tǒng)中的狀態(tài)作為初始狀態(tài). 那么, 當網(wǎng)絡(luò)狀態(tài)發(fā)生變化后,Plugin進程也應(yīng)該及時響應(yīng). 所以Plugin最后會啟動外部事件響應(yīng)循環(huán), 這里根據(jù)事件類型的不同,實際會啟動若干個Go routine, 在這些routine里, Plugin進程監(jiān)視etcd中相應(yīng)Key的變換, 并作出響應(yīng).
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27527.html
摘要:在當前版本中會注冊和兩個服務(wù),前者開放端口供控制整個系統(tǒng),后者開放端口供控制器使用。 Contiv網(wǎng)絡(luò)結(jié)構(gòu) showImg(http://contiv.github.io/assets/images/Contiv-HighLevel-Architecture-a619d55a.png); 上圖為Contiv的網(wǎng)絡(luò)模型,大體上可分為Master和Host Agent兩個組件,其中Mast...
摘要:網(wǎng)絡(luò)策略的作用可以通過網(wǎng)絡(luò)策略來限制容器之間的訪問行為,以實現(xiàn)用戶對安全性的方面的要求。搭建過程環(huán)境準備參考思科網(wǎng)絡(luò)插件一環(huán)境部署搭建環(huán)境,由于本文并不關(guān)注網(wǎng)絡(luò)的跨主機特性,因此只在一臺宿主機上啟動進程和進程就夠了。 網(wǎng)絡(luò)策略的作用 Contiv可以通過網(wǎng)絡(luò)策略來限制容器之間的訪問行為,以實現(xiàn)用戶對安全性的方面的要求。比如,我可以限制容器僅對源IP在特定范圍的其他容器開放特定的端口,而...
摘要:什么是官網(wǎng)是一個用于跨虛擬機裸機公有云或私有云的異構(gòu)容器部署的開源容器網(wǎng)絡(luò)架構(gòu)。作為業(yè)界最強大的容器網(wǎng)絡(luò)架構(gòu),具有層層和模式,能夠與思科基礎(chǔ)設(shè)施進行本地集成,并使用豐富的網(wǎng)絡(luò)和安全策略將應(yīng)用意圖與基礎(chǔ)設(shè)施功能進行映射。 什么是Contiv Contiv (官網(wǎng))是一個用于跨虛擬機、裸機、公有云或私有云的異構(gòu)容器部署的開源容器網(wǎng)絡(luò)架構(gòu)。作為業(yè)界最強大的容器網(wǎng)絡(luò)架構(gòu),Contiv具有2層、...
摘要:它最基本的功能是實現(xiàn)了虛擬交換機,可以把虛擬網(wǎng)卡和虛擬交換機的端口連接,這樣一個交換機下的多個網(wǎng)卡網(wǎng)絡(luò)就打通了,類似的功能。最基礎(chǔ)的分布式虛擬交換機,這樣可以將多臺機器上的容器組織在一個二層網(wǎng)絡(luò)下,看上去就好像所有容器接在一臺交換機上。 【編者的話】Kubernetes經(jīng)過了幾年的發(fā)展,存在著很多的網(wǎng)絡(luò)方案。然而網(wǎng)絡(luò)虛擬化在Kubernetes出現(xiàn)前就一直在發(fā)展,其中基于OpenVsw...
閱讀 1079·2023-04-25 22:27
閱讀 905·2021-11-22 14:56
閱讀 1025·2021-11-11 16:54
閱讀 1764·2019-08-30 15:54
閱讀 3534·2019-08-30 13:20
閱讀 1239·2019-08-30 10:55
閱讀 2113·2019-08-26 13:34
閱讀 3312·2019-08-26 11:53