5種場景 容器網(wǎng)絡(luò)技術(shù)方案選型推薦_第1頁
5種場景 容器網(wǎng)絡(luò)技術(shù)方案選型推薦_第2頁
5種場景 容器網(wǎng)絡(luò)技術(shù)方案選型推薦_第3頁
5種場景 容器網(wǎng)絡(luò)技術(shù)方案選型推薦_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

各臺服務(wù)器上的容器IP各臺服務(wù)器上的容器IP段不能重疊,所以需要有某種IP段分配機5種場景容器網(wǎng)絡(luò)技術(shù)方案選型推薦放驢人收集整體SDN是Software-definednetworking的縮寫。在許多介紹Kubernetes的文檔,特別是安裝文檔中,當(dāng)介紹到Kubernetes所需的容器網(wǎng)絡(luò)時常常會提到這個縮寫,告知用戶需要使用某種SDN技術(shù)用以解決“每個Pod有獨立IP,Pod之間可以不經(jīng)過NAT直接互訪”這一Kubernetes集群最基本的技術(shù)要求。大多數(shù)非網(wǎng)絡(luò)工程師背景的技術(shù)人員對SDN這個概念會比較陌生,當(dāng)讀到這個段落時,往往會選擇把它當(dāng)作Kubernetes的底層依賴,照著文檔所推薦的流程安裝一款SDN工具,比如Flannel,Calico,Weave等。由于不了解這些工具的原理,同時缺乏實際的使用經(jīng)驗,當(dāng)出現(xiàn)文檔以外的異常情況時,整個安裝流程就卡住了。SDN儼然成為了Kubernetes大規(guī)模普及的攔路虎。那些按照文檔順利搭建起來的集群當(dāng)中,還有不少使用了并不適合該集群所處環(huán)境的SDN技術(shù),造成了額外的運維負擔(dān)以及潛在的安全風(fēng)險。讓我們不得不思考一個問題,怎樣才是正確的在Kubernetes集群中使用SDN技術(shù)的方法?今天我們來詳細聊聊這個話題。結(jié)論先行在大多數(shù)的Kubernetes集群中,都不需要使用SDN技術(shù),Kubernetes的容器網(wǎng)絡(luò)要求可以使用更加簡單易懂的技術(shù)來實現(xiàn),只有當(dāng)企業(yè)有特定的安全或者配置要求時,才需要使用SDN技術(shù)。SDN應(yīng)當(dāng)作為一個附加選項,用以解決特定的技術(shù)問題。理解Kubernetes的容器網(wǎng)絡(luò)下圖是一張Kubernetes容器網(wǎng)絡(luò)的示意圖可以看到在圖中,每臺服務(wù)器上的容器有自己獨立的IP段,各個服務(wù)器之間的容器可以根據(jù)目標(biāo)容器的IP地址進行訪問。為了實現(xiàn)這一目標(biāo),重點解決以下這兩點:制,為各臺服務(wù)器分配獨立的IP段從某個Pod發(fā)出的流量到達其所在服務(wù)器時,服務(wù)器網(wǎng)絡(luò)層應(yīng)當(dāng)具備根據(jù)目標(biāo)IP地址將流量轉(zhuǎn)發(fā)到該IP所屬IP段所對應(yīng)的目標(biāo)服務(wù)器的能力??偨Y(jié)起來,實現(xiàn)Kubernetes的容器網(wǎng)絡(luò)重點需要關(guān)注兩方面,分配和路由。Flannel的工作方式這里我們以比較常見的Flannel為例子,看看SDN系統(tǒng)是如何解決分配和路由的問題的。下圖是Flannel的架構(gòu)示意圖可以看到Flannel依賴etcd實現(xiàn)了統(tǒng)一的配置管理機制。當(dāng)一臺服務(wù)器上的Flannel啟動時,它會連接所配置的etcd集群,從中取到當(dāng)前的網(wǎng)絡(luò)配置以及其他已有服務(wù)器已經(jīng)分配的IP段,并從未分配的IP段中選取其中之一作為自己的IP段。當(dāng)它將自己的分配記錄寫入etcd之后,其他的服務(wù)器會收到這條新記錄,并更新本地的IP段映射表。Flannel的IP段分配發(fā)生在各臺服務(wù)器上,由flannel進程將結(jié)果寫入到etcd中。路由也由Flannel完成,網(wǎng)絡(luò)流量先進入Flannel控制的Tunnel中,由Flannel根據(jù)當(dāng)前的IP段映射表轉(zhuǎn)發(fā)到對應(yīng)的服務(wù)器上。需要指出的是Flannel有多種backend,另外新增的kube-subnet-mgr參數(shù)會導(dǎo)致Flannel的工作方式有所不同,在這里就不詳細展開了。有興趣的朋友可以去查閱Flannel的文檔以及源代碼了解更多的細節(jié)。更見簡化的網(wǎng)絡(luò)配置方法Flannel的工作方式有2點是需要注意的。一是所有服務(wù)器上運行的Flannel均需要etcd的讀寫權(quán)限,不利于權(quán)限的隔離和安全防護。二是許多教程中所使用的默認backend類型為vxlan,雖然它使用了內(nèi)核中的vxlan模塊,造成的性能損失并不大,但是在常見的二層網(wǎng)絡(luò)的環(huán)境中,其實并不需要使用Tunnel技術(shù),直接利用路由就可以實現(xiàn)流量的轉(zhuǎn)發(fā),這時使用hostgw模式就可以達成目標(biāo)。大部分的Kubernetes集群服務(wù)器數(shù)量并不會超過100臺,不論是在物理機房當(dāng)中或是利用IaaS提供的VPC技術(shù),我們會把這些服務(wù)器均放在同一個網(wǎng)段,這時我們可以去掉Flannel這一層,直接使用Kubernetes內(nèi)置的kubenet功能,配合上我們?yōu)镵ubernetes定制的hostroutes工具,即可實現(xiàn)容器網(wǎng)絡(luò)的要求。,kubenetkubenet是kubelet內(nèi)置的網(wǎng)絡(luò)插件中的一個,它非常的簡單,會根據(jù)當(dāng)前服務(wù)器對應(yīng)的Node資源上的PodCIDR字段所設(shè)的IP段,配置一個本地的網(wǎng)絡(luò)接口cbr0,在新的Pod啟動時,從IP段中分配一個空閑的IP,用它創(chuàng)建容器的網(wǎng)絡(luò)接口,再將控制權(quán)交還給kubelet,完成后續(xù)的Pod創(chuàng)建流程。由于kubenet會自己管理容器網(wǎng)絡(luò)接口,所以使用kubenet時,不需要修改任何的Docker配置,僅需要在啟動kubelet時,傳入network-plugin=kubenet參數(shù)即可。,allocate-node-cidrsallocate-node-cidrs是controllermanager的一個參數(shù),當(dāng)它和cluster-cidr參數(shù)共同使用的時候,controller-manager會為所有的Node資源分配容器IP段,并將結(jié)果寫入到PodCIDR字段。[hostrouteshostroutes是我們?yōu)閗ubenet開發(fā)的一個配套小工具,它也非常的簡單,它會watch所有的Node資源的變化,用所有Node資源的PodCIDR字段來配置服務(wù)器本地路由表。這時所有Pod發(fā)出的流量將通過Linux自帶的路由功能進行轉(zhuǎn)發(fā),性能優(yōu)異。Linux的路由功能也是大部分技術(shù)人員已經(jīng)掌握的技能,理解維護起來沒有任何負擔(dān)。在這一簡化的模式下,controllermanager負責(zé)分配容器IP段,kubenet負責(zé)本地網(wǎng)絡(luò)接口的控制,hostroutes負責(zé)路由。我們最大程度使用了Kubernetes已有的功能,并且用hostroutes來解決kubenet只管網(wǎng)絡(luò)接口不管路由的問題。整個方案中,需要寫入權(quán)限的僅有部署在master節(jié)點的controller-manager,運行在Node節(jié)點上的kubenet和hostroutes均只需要讀取權(quán)限即可,增強了安全性。另外此方案將Kubernetes作為唯一的配置來源,去除了對etcd的依賴,簡化了配置,降低了運維負擔(dān)和安全風(fēng)險。不同的技術(shù)方案雖說實現(xiàn)細節(jié)不同,但是只要圍繞著分配和路由這兩個關(guān)鍵點進行比較,我們就可以更加明確的在不同方案之間進行選擇。容器網(wǎng)絡(luò)技術(shù)方案選型推薦任何的技術(shù)方案都離不開場景,在這里我們根據(jù)不同的場景給大家推薦幾種技術(shù)方案:?單服務(wù)器:不需要網(wǎng)絡(luò)組件,使用Docker自帶的網(wǎng)絡(luò)即可?小規(guī)模集群:使用kubenet+hostroutes,簡單、易配合管理?云環(huán)境中的小規(guī)模集群:使用kubenet+master組件上運行的網(wǎng)絡(luò)控制器,充分利用IaaS所提供的VPC環(huán)境中的路由功能,簡化網(wǎng)絡(luò)配置?服務(wù)器不在一個網(wǎng)段的集群:使用Flannel提供的vxlan或者其他類似的Tunnel技術(shù)?安全要求高的集群:使用Calico或者OpenvSwitch等支持Policy的SDN技術(shù)總結(jié)在本篇文章中,我們探討了Kubernetes的容器網(wǎng)絡(luò)的工具方式,并以Flannel為案例分析了已有的SDN解決方案,并提出了適合小規(guī)模集群的kubenet+hostroutes的解決方案。希望可以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論