在最近于加拿大溫哥華召開(kāi)的OpenStack峰會(huì)上,6000多名與會(huì)人士接受了使用容器情況方面的調(diào)查。被問(wèn)及是否在生產(chǎn)環(huán)境中有容器時(shí),臺(tái)下一小部分聽(tīng)眾舉手示意――據(jù)我估計(jì)大概有5%。但是被問(wèn)及誰(shuí)在接下來(lái)幾年考慮將容器遷移到生產(chǎn)環(huán)境時(shí),幾乎人人都舉手。
這一幕生動(dòng)地表明,雖然容器是一項(xiàng)現(xiàn)處于早期階段的技術(shù),但眾多企業(yè)組織為它制定了宏偉計(jì)劃。由于Docker和Kubernetes等多種選擇,用戶們?cè)谡J(rèn)真考慮自己的選擇道路。容器提供了幾個(gè)明顯的優(yōu)勢(shì):簡(jiǎn)化和加快了應(yīng)用程序的部署、可移植性以及占用少量的資源,但是也存在風(fēng)險(xiǎn)。
一大風(fēng)險(xiǎn)就是整合。開(kāi)源社區(qū)正在考慮如何將容器整合到現(xiàn)有的云和自動(dòng)化框架當(dāng)中,比如Magnum和幾個(gè)OpenStack項(xiàng)目。另一個(gè)問(wèn)題就是容器網(wǎng)絡(luò)。用戶們常常問(wèn)我如何設(shè)計(jì)一套同時(shí)支持容器和虛擬機(jī)的網(wǎng)絡(luò)解決方案。虛擬機(jī)和容器(以及部署的裸機(jī)系統(tǒng))通常帶來(lái)了全然不同的網(wǎng)絡(luò)模型。
不妨后退一步,考慮一下如今的容器網(wǎng)絡(luò)是如何工作的。容器網(wǎng)絡(luò)基于一種簡(jiǎn)單的架構(gòu),主要是單主機(jī)解決方案。比如說(shuō),Docker網(wǎng)絡(luò)模型基于幾個(gè)簡(jiǎn)單的假定:
·它充分利用與容器相連接的本地(每個(gè)主機(jī)里面的)Linux網(wǎng)橋。
·每個(gè)計(jì)算節(jié)點(diǎn)都有集群看得見(jiàn)的IP地址。
·每個(gè)容器都有集群看不見(jiàn)的專有的IP地址。
·網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)協(xié)議用來(lái)將容器的專有IP地址綁定至計(jì)算節(jié)點(diǎn)的公共IP地址。
·此外,負(fù)載均衡系統(tǒng)可用來(lái)將服務(wù)映射至一組IP地址和端口。
·iptable用于應(yīng)用程序與租戶之間的網(wǎng)絡(luò)分段和隔離。
如果運(yùn)用到容器網(wǎng)絡(luò)上,這種模型在許多方面顯得不盡如人意。它限制了用容器構(gòu)建的多租戶云解決方案跨多個(gè)主機(jī)進(jìn)行擴(kuò)展的功能。高可用性方面的配置很有限。無(wú)論工作負(fù)載的移動(dòng)性如何,一致的連接性和安全性也成問(wèn)題。另外,iptable和NAT的結(jié)合使用限制了可擴(kuò)展性和性能,這讓使用容器的主要優(yōu)勢(shì)之一蕩然無(wú)存。
那么,面向容器的網(wǎng)絡(luò)解決方案應(yīng)該提供什么呢?另外,你又該如何評(píng)估解決方案與特定應(yīng)用程序的契合度?我們不妨把這分成三個(gè)問(wèn)題;這些答案應(yīng)該可以幫助你更深入地了解容器網(wǎng)絡(luò)方面的獨(dú)特之處。
1. 你會(huì)在基于容器的基礎(chǔ)設(shè)施上運(yùn)行哪種類型的應(yīng)用程序?
這直接影響到你網(wǎng)絡(luò)基礎(chǔ)設(shè)施的藍(lán)圖以及如何構(gòu)建網(wǎng)絡(luò)基礎(chǔ)設(shè)施。你的應(yīng)用程序需要豐富的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)以及高級(jí)服務(wù)嗎?它們是多租戶模式,還是簡(jiǎn)單的“扁平網(wǎng)絡(luò)”就足以勝任?
面向容器的虛擬網(wǎng)絡(luò)解決方案讓最終用戶(租戶)和云操作人員都可以定義并控制各自的網(wǎng)絡(luò)要求。解決方案還必須提供跨多個(gè)物理主機(jī)的微分段(micro-segmentation)和隔離所需要的構(gòu)件。
2. 性能和可擴(kuò)展性方面的要求是什么?
你在思考這個(gè)問(wèn)題時(shí),要考慮基礎(chǔ)設(shè)施上應(yīng)用程序的要求。應(yīng)當(dāng)考慮這樣的解決方案:在一種完全分布式的架構(gòu)中提供隔離和網(wǎng)絡(luò)功能,從而為你應(yīng)用程序的發(fā)展和擴(kuò)展鋪平道路。隨著部署的云越來(lái)越龐大,網(wǎng)絡(luò)解決方案應(yīng)該跨多個(gè)物理主機(jī)向外擴(kuò)展,還應(yīng)該在云編排框架里面緊密地整合起來(lái)。
3. 你需要將容器與虛擬機(jī)和裸機(jī)工作負(fù)載互聯(lián)起來(lái)嗎?
大多數(shù)應(yīng)用程序需要用容器支持混合工作負(fù)載,所以要尋求同時(shí)支持兩者的解決方案。一致的抽象模型(網(wǎng)絡(luò)、子網(wǎng)、路由器、接口和浮動(dòng)IP地址)和一套用于配置和自動(dòng)化的一致的API,是完成這項(xiàng)工作的方法。
云用戶呼吁面向任何工作負(fù)載的網(wǎng)絡(luò)模型與功能強(qiáng)大的網(wǎng)絡(luò)抽象結(jié)合起來(lái),從而簡(jiǎn)化容器到容器的聯(lián)系,并且增添先進(jìn)的網(wǎng)絡(luò)功能和微分段。
你在網(wǎng)絡(luò)和容器方面有什么樣的挑戰(zhàn)和要求?歡迎留言交流!