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