John Edwards
容器在幾年前就已經(jīng)出現(xiàn)了,其可以在不同計(jì)算環(huán)境之間提供可靠的存儲(chǔ)和應(yīng)用程序交付。通過對(duì)應(yīng)用程序平臺(tái)及其附屬項(xiàng)目進(jìn)行容器化,操作系統(tǒng)發(fā)行版和底層基礎(chǔ)設(shè)施中的差異可以被抽象出來。
自由互助保險(xiǎn)公司(Liberty Mutual Insurance)的IT架構(gòu)師Michael Letourneau表示,網(wǎng)絡(luò)已成為容器生態(tài)系統(tǒng)中的關(guān)鍵組件,其可為在相同主機(jī)和不同主機(jī)上運(yùn)行的容器提供連接性。負(fù)責(zé)構(gòu)建和運(yùn)營(yíng)Liberty Mutual容器平臺(tái)的Letourneau表示:“將應(yīng)用程序放入容器會(huì)自然而然地推動(dòng)容器對(duì)網(wǎng)絡(luò)連接的需求?!?h3>虛擬化演進(jìn)
容器網(wǎng)絡(luò)是存儲(chǔ)、計(jì)算和網(wǎng)絡(luò)技術(shù)虛擬化發(fā)展的一部分。該技術(shù)始于十年前的PC/機(jī)器虛擬化。開源軟件提供商,IBM子公司Red Hat的網(wǎng)絡(luò)功能虛擬化技術(shù)總監(jiān)Thomas Nadeau表示:“從很早開始,人們就意識(shí)到物理機(jī)的虛擬化在成本、速度和易開發(fā)性方面更具優(yōu)勢(shì)?!?/p>
通過虛擬化,硬件資源可由虛擬機(jī)共享,每個(gè)虛擬機(jī)都包含有應(yīng)用程序和完整的操作系統(tǒng)實(shí)例。例如,運(yùn)行三個(gè)虛擬機(jī)的物理服務(wù)器會(huì)有管理程序,并在頂層運(yùn)行三個(gè)獨(dú)立的操作系統(tǒng)。支持三個(gè)容器化應(yīng)用程序的服務(wù)器則只需要一個(gè)操作系統(tǒng),每個(gè)容器可與其他容器共享操作系統(tǒng)內(nèi)核。
自身具有完整操作系統(tǒng)的虛擬機(jī)可能會(huì)消耗數(shù)GB的存儲(chǔ)空間,而一個(gè)容器的大小可能僅為數(shù)十MB。因此,與虛擬機(jī)相比,單個(gè)服務(wù)器可以承載更多的容器,從而大大提高了數(shù)據(jù)中心的效率,同時(shí)減少了設(shè)備成本、維護(hù)成本、電力成本以及其他一些成本。
遵循正確的容器網(wǎng)絡(luò)方法對(duì)于長(zhǎng)期成功至關(guān)重要。
選擇正確的容器網(wǎng)絡(luò)方法在很大程度上取決于應(yīng)用程序需求、部署類型、編排器的使用以及底層操作系統(tǒng)的類型。網(wǎng)絡(luò)安全技術(shù)提供商Palo Alto Networks負(fù)責(zé)產(chǎn)品管理、容器和無服務(wù)器安全性的副總裁John Morello解釋說:“目前最流行的容器技術(shù)都是基于Docker和Kubernetes,它們使用驅(qū)動(dòng)程序的網(wǎng)絡(luò)子系統(tǒng)都具有可插拔性。根據(jù)網(wǎng)絡(luò)和部署類型,用戶可為自己的環(huán)境選擇最適用的驅(qū)動(dòng)程序以處理容器到容器或容器到主機(jī)的通信?!?/p>
Letourneau解釋說:“由于可能會(huì)擴(kuò)展大量的容器并管理臨時(shí)容器,網(wǎng)絡(luò)解決方案必須要能夠滿足企業(yè)的需求。”
明確初始需求,確定滿足這些需求的選項(xiàng),然后實(shí)施解決方案,這一套流程與選擇正確的編排代理配置和平衡容器負(fù)載同等重要。Letourneau說:“目前,選擇一個(gè)基于Kubernetes的編排器是一個(gè)非常安全的決定。用什么作為網(wǎng)絡(luò)層這一問題回答起來要更加復(fù)雜,因?yàn)樗鼈儾粌H僅取決于規(guī)模,還取決于所需要的功能?!?/p>
IP地址管理、DNS和DHCP服務(wù)提供商BlueCat Networks的高級(jí)集成架構(gòu)師Chris Meyer認(rèn)為,在向容器過渡時(shí),關(guān)鍵是要?jiǎng)?chuàng)建一個(gè)由微服務(wù)組成的分布式體系結(jié)構(gòu),這些應(yīng)用程序?qū)⒔M成松散耦合服務(wù)集合。他說:“通過微服務(wù),人們可以獲得一個(gè)容錯(cuò)性更高且更易于升級(jí)的應(yīng)用程序。”
Meyer說:“傳統(tǒng)上,人們應(yīng)當(dāng)將每個(gè)容器當(dāng)作普通的網(wǎng)絡(luò)設(shè)備連接在一起,通過網(wǎng)絡(luò)進(jìn)行連接,并支付需要離開接口和再返回來的費(fèi)用?!边@里是網(wǎng)絡(luò)發(fā)揮重要作用的地方。
這樣的方法帶來了額外的復(fù)雜性,比如時(shí)刻要擔(dān)心防火墻導(dǎo)致的問題。他說:“通過最新的容器網(wǎng)絡(luò)技術(shù),人們可以將容器連接在一起,使其看起來好像在同一接口上運(yùn)行。這樣做有一個(gè)巨大的好處,即架構(gòu)的所有部分不僅可以輕松且快速地相互通信,而且還可以分布在不同數(shù)據(jù)中心的不同機(jī)器上。”
橋接網(wǎng)絡(luò)、覆蓋網(wǎng)絡(luò)、主機(jī)網(wǎng)絡(luò)和Macvlan網(wǎng)絡(luò)是一些常見的容器網(wǎng)絡(luò)選項(xiàng)。
橋接網(wǎng)絡(luò)能夠讓運(yùn)行在同一主機(jī)上的容器彼此相互通信,但是分配給每個(gè)容器的IP地址不能從主機(jī)外部訪問。Docker的一個(gè)新實(shí)例帶有默認(rèn)的橋接網(wǎng)絡(luò),并且所有新啟動(dòng)的容器都會(huì)自動(dòng)連接到它們。開箱即用的默認(rèn)設(shè)置需要在生產(chǎn)中進(jìn)行微調(diào)。自定義橋接網(wǎng)絡(luò)啟用的功能在默認(rèn)模式下不是自動(dòng)的,包括DNS解析在內(nèi)。用戶能夠在運(yùn)行時(shí)從自定義橋接網(wǎng)絡(luò)添加和刪除容器,并可在容器之間共享環(huán)境變量。
覆蓋網(wǎng)絡(luò)適用于在不同主機(jī)上運(yùn)行的容器,例如Docker swarm中的容器。在覆蓋網(wǎng)絡(luò)中,跨主機(jī)的容器可以自動(dòng)找到彼此并通過網(wǎng)絡(luò)子網(wǎng)在兩個(gè)主機(jī)之間進(jìn)行通信。企業(yè)不必為每個(gè)參與的容器都進(jìn)行設(shè)置。生產(chǎn)系統(tǒng)通常需要?jiǎng)?chuàng)建一個(gè)自定義的覆蓋網(wǎng)絡(luò)。
在主機(jī)網(wǎng)絡(luò)中,主機(jī)網(wǎng)絡(luò)驅(qū)動(dòng)程序使得容器的網(wǎng)絡(luò)堆??膳c主機(jī)上的堆棧并排運(yùn)行。主機(jī)網(wǎng)絡(luò)容器中端口80上的Web服務(wù)器可從主機(jī)本身的端口80獲得。速度是主機(jī)網(wǎng)絡(luò)的最大魅力,但是代價(jià)是犧牲了靈活性:如果將端口80映射到容器,則其他容器都不能在該主機(jī)上使用它們。
Macvlan網(wǎng)絡(luò)用于直接與底層物理網(wǎng)絡(luò)配合使用的應(yīng)用程序,例如網(wǎng)絡(luò)流量監(jiān)控應(yīng)用程序。Macvlan驅(qū)動(dòng)程序不僅為容器分配了IP地址,而且還為它們分配了物理MAC地址。Macvlan通常不會(huì)為不工作的應(yīng)用程序而保留下來,除非它們依賴于物理網(wǎng)絡(luò)地址。
連接性不是唯一的考慮因素。容器網(wǎng)絡(luò)的不同模式支持不同的聯(lián)網(wǎng)功能。例如,橋接網(wǎng)絡(luò)利用的是網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT),這會(huì)帶來性能成本。主機(jī)網(wǎng)絡(luò)消除了對(duì)NAT的需求,但帶來了潛在的端口沖突。在不同的網(wǎng)絡(luò)方法中,一些功能也有所不同,其中包括IP地址管理(IPAM)、IPv6、負(fù)載平衡和服務(wù)質(zhì)量。
此外,企業(yè)還需要應(yīng)對(duì)容器運(yùn)行時(shí)編排器和插件的差異。例如,Docker和Kubernetes對(duì)于如何分配和管理網(wǎng)絡(luò)資源有著不同的模型。與Docker的網(wǎng)絡(luò)控件配合使用的基于Kubernetes的容器網(wǎng)絡(luò)接口(CNI)插件可以幫助縮小差異。 CNI插件主要被設(shè)計(jì)用于將容器運(yùn)行時(shí)與數(shù)十種不同的容器網(wǎng)絡(luò)執(zhí)行聯(lián)系起來。
考慮到正常運(yùn)行的容器生態(tài)系統(tǒng)最終將成長(zhǎng)起來并形成規(guī)模,因此制定詳細(xì)的網(wǎng)絡(luò)策略,提前為該技術(shù)做好準(zhǔn)備非常重要。Letourneau說:“容器生態(tài)系統(tǒng)缺乏規(guī)劃性的野蠻生長(zhǎng)可能會(huì)讓網(wǎng)絡(luò)管理員感到頭疼?!卞e(cuò)誤配置的容器編排解決方案可能會(huì)導(dǎo)致上游服務(wù)發(fā)生拒絕服務(wù)事件。
在企業(yè)開始成長(zhǎng)時(shí),企業(yè)必須要制定自己的企業(yè)網(wǎng)絡(luò)戰(zhàn)略,對(duì)于不斷發(fā)展的容器環(huán)境也是如此。Letourneau說,如果使用基于Kubernetes的業(yè)務(wù)流程解決方案,那么有很多CNI可以選擇?!懊糠N部署都有不同的功能和適用領(lǐng)域,這使得它們對(duì)于不同的用例有著不同的吸引力。”
在從本地?cái)?shù)據(jù)中心轉(zhuǎn)向云服務(wù)提供商時(shí),企業(yè)應(yīng)該確定并評(píng)估其網(wǎng)絡(luò)架構(gòu)和目標(biāo),即使目前不打算采用容器技術(shù)也應(yīng)做這些工作。Letourneau說:“云服務(wù)提供商網(wǎng)絡(luò)與數(shù)據(jù)中心網(wǎng)絡(luò)的集成可能會(huì)使未來由云服務(wù)提供商管理的容器解決方案面臨復(fù)雜的網(wǎng)絡(luò)。”
容器的采用要求重新考慮企業(yè)的整個(gè)網(wǎng)絡(luò)體系結(jié)構(gòu)。Meyer說:“我們不能想當(dāng)然地認(rèn)為容器網(wǎng)絡(luò)與傳統(tǒng)網(wǎng)絡(luò)相同,然后開始部署容器網(wǎng)絡(luò),因?yàn)槟菢拥脑挘覀儗o法用一種易于維護(hù)的方式將架構(gòu)連接在一起?!?/p>
例如,當(dāng)有需求提出來后,老舊網(wǎng)絡(luò)必須要手動(dòng)進(jìn)行修改(例如添加新服務(wù)器)。如果修改未能通過有效驗(yàn)證,那么很可能會(huì)發(fā)生中斷。
數(shù)據(jù)恢復(fù)服務(wù)提供商Sungard AS的首席技術(shù)官,高級(jí)架構(gòu)師Greg Cox說:“傳統(tǒng)的數(shù)據(jù)中心網(wǎng)絡(luò)配置是作為物理設(shè)備上的靜態(tài)配置實(shí)現(xiàn)的,因此如果服務(wù)器需要移動(dòng),那么則需要修改配置。修改驗(yàn)證要求IT部門對(duì)實(shí)驗(yàn)室進(jìn)行大量投資,因?yàn)閷?shí)驗(yàn)室需要配備昂貴的測(cè)量和監(jiān)視設(shè)備。有了容器網(wǎng)絡(luò),修改和驗(yàn)證將成為一種自動(dòng)化流程?!?/p>
采用容器化策略并轉(zhuǎn)向基于微服務(wù)的做法標(biāo)志著傳統(tǒng)數(shù)據(jù)中心操作和實(shí)踐發(fā)生了重大變化。Letourneau說:“網(wǎng)絡(luò)團(tuán)隊(duì)以往熟悉的是相對(duì)靜態(tài)且不變的基礎(chǔ)設(shè)施、已計(jì)劃好的子網(wǎng)和標(biāo)準(zhǔn)的容量測(cè)量方法。DHCP和DNS要求則基于的是最終用戶桌面,并且系統(tǒng)在設(shè)計(jì)時(shí)考慮了緩存和靜態(tài)資源?!?/p>
容器化可以有效地為數(shù)據(jù)中心清除工作負(fù)載占用的大量空間。他解釋說,在容器生態(tài)系統(tǒng)中,網(wǎng)絡(luò)配置和服務(wù)位置經(jīng)常會(huì)定期修改,并且網(wǎng)絡(luò)沒有直接的人工控制?!斑@超出了‘軟件定義的概念,屬于由編排調(diào)度器算法管理的‘應(yīng)用程序定義網(wǎng)絡(luò)?!?/p>
隨著容器技術(shù)逐步被采用,許多技術(shù)和實(shí)踐都已經(jīng)過時(shí)了,網(wǎng)絡(luò)團(tuán)隊(duì)將不得不適應(yīng)大潮流并進(jìn)行自我更新。由于容器網(wǎng)絡(luò)主要是由軟件控制的,因此IT員工需要擺脫日益陳舊的控件,并深入了解服務(wù)器系統(tǒng)和流程。服務(wù)器將流量封裝并發(fā)送到需要的任何地方,這種封裝使得在無需接觸服務(wù)器實(shí)際所在的物理網(wǎng)絡(luò)的情況下即可構(gòu)建全新的網(wǎng)絡(luò)架構(gòu)。
容器網(wǎng)絡(luò)的出現(xiàn)讓傳統(tǒng)的網(wǎng)絡(luò)管理和監(jiān)視工具都已過時(shí),這一事實(shí)導(dǎo)致傳統(tǒng)網(wǎng)絡(luò)又被進(jìn)一步顛覆。Letourneau說:“可見性將受到限制,因?yàn)橐郧坝糜诒O(jiān)視網(wǎng)絡(luò)性能的工具不太可能能夠幫助團(tuán)隊(duì)解決容器化生態(tài)系統(tǒng)中的問題。”
形成網(wǎng)絡(luò)的容器可以增強(qiáng)安全性,但是同時(shí)也可以打開新的危險(xiǎn)之門。Morello說:“由于容器具有動(dòng)態(tài)特性,因此必須部署一種可以自動(dòng)學(xué)習(xí)微服務(wù)的聯(lián)網(wǎng)行為并可完全讓其具有可視性的安全工具,這一點(diǎn)非常重要?!?/p>
容器的出現(xiàn)意味著技術(shù)堆棧和軟件開發(fā)生命周期流程發(fā)生了巨大變化。這并不奇怪,因?yàn)槠髽I(yè)面臨的挑戰(zhàn)不僅僅是確保系統(tǒng)正常運(yùn)行,還要確保系統(tǒng)的安全。
容器安全技術(shù)公司Aqua Security的戰(zhàn)略副總裁Rani Osnat表示,容器網(wǎng)絡(luò)打破了許多設(shè)想,例如使用傳統(tǒng)防火墻和網(wǎng)絡(luò)安全控制的想法。Osnat稱,企業(yè)需要一種方法以控制入口和出口;對(duì)容器進(jìn)行微分段,以防止應(yīng)用程序相互干擾;擁有可以映射到容器連接而不是虛擬機(jī)連接的防火墻,以防止?jié)撛诘牟话踩臇|西向網(wǎng)絡(luò)穿越。
由于已經(jīng)認(rèn)識(shí)到加強(qiáng)保護(hù)的需求正在不斷增長(zhǎng),因此各種項(xiàng)目也如雨后春筍般涌現(xiàn)出來,其目標(biāo)就是使安全性成為容器網(wǎng)絡(luò)技術(shù)不可或缺的一部分。Letourneau舉例稱:“Cillium項(xiàng)目通過利用Berkeley數(shù)據(jù)包過濾器將安全策略注入網(wǎng)絡(luò)層來提供低層級(jí)的安全性和可見性。”作為一種服務(wù)網(wǎng)格,Istio可解決分布式微服務(wù)架構(gòu)一些與生俱來的挑戰(zhàn)。
盡管這兩個(gè)項(xiàng)目都是相對(duì)較新的項(xiàng)目,但是它們提供了將安全層直接擴(kuò)展到網(wǎng)絡(luò)中的視圖,這不是由單獨(dú)團(tuán)隊(duì)中的網(wǎng)絡(luò)管理員定義的,而是由實(shí)際構(gòu)建服務(wù)和應(yīng)用程序的團(tuán)隊(duì)定義的。
從總體上看,容器網(wǎng)絡(luò)領(lǐng)域正在迅速發(fā)展。Meyer說:“新事物一直在不斷出現(xiàn),這是一個(gè)值得關(guān)注的領(lǐng)域。最新的強(qiáng)大工具能夠有助于簡(jiǎn)化向這種新范式的過渡,同時(shí)幫助具有前瞻性的企業(yè)使用這種新架構(gòu)進(jìn)行部署?!?/p>
本文作者John Edwards 為資深商業(yè)技術(shù)記者,曾在《紐約時(shí)報(bào)》《華盛頓郵報(bào)》以及CIO、Computerworld、Network World、CFO Magazine、IBM Data Management Magazine、RFID Journal和Electronic Design等眾多商業(yè)和技術(shù)刊物上發(fā)表過大量文章。
原文網(wǎng)址
https://www.networkworld.com/article/3529384/essential-things-to-know-about-container-networking.html?nsdr=true