多云環(huán)境實(shí)現(xiàn)容器效益最大化
與虛擬機(jī)相比,容器技術(shù)具有大量的優(yōu)勢(shì)。我們不僅要了解容器是如何實(shí)現(xiàn)多云應(yīng)用程序可移植性的承諾,而且也要知道其不足之處。
對(duì)于那些希望跨云平臺(tái)實(shí)現(xiàn)應(yīng)用程序可移植性的企業(yè)來說,容器技術(shù)可以是一個(gè)可行的選項(xiàng)。通過精心規(guī)劃和使用合適的工具,IT團(tuán)隊(duì)是可以直面挑戰(zhàn)并在多云環(huán)境中實(shí)現(xiàn)容器技術(shù)優(yōu)勢(shì)的。
為了了解在多云環(huán)境下實(shí)現(xiàn)應(yīng)用程序可移植性的潛在好處和風(fēng)險(xiǎn),我們可將它與它的替代解決方案虛擬機(jī)進(jìn)行比較。容器與虛擬機(jī)的不同之處在于:應(yīng)用程序鏡像與這些鏡像中所包含的內(nèi)容,以及生命周期管理等方面。
虛擬機(jī)部署要求應(yīng)用程序鏡像具有操作系統(tǒng)、中間件和應(yīng)用軟件的完整軟件包。因此,這些鏡像可以在符合應(yīng)用程需求的硬件功能和資源容量(例如CPU和內(nèi)存)的任何虛擬機(jī)上正常運(yùn)行。只要主機(jī)服務(wù)器的虛擬機(jī)管理程序與虛擬機(jī)兼容,并且應(yīng)用鏡像所使用的任何都可以在云平臺(tái)上使用,那么用戶也就沒有什么重大的執(zhí)行方面問題。
另一方面,容器應(yīng)用鏡像并不包含操作系統(tǒng)或所有的中間件組件。所以,它們的正常運(yùn)行主要依賴于容器主機(jī)和容器軟件本身。這意味著,如果容器需要跨云供應(yīng)商的不同應(yīng)用程序鏡像,那么它們可能會(huì)在多云環(huán)境中造成挑戰(zhàn)。
但是,大多數(shù)容器軟件都將應(yīng)用打包在一個(gè)標(biāo)準(zhǔn)容器中間件集合中,然后那個(gè)容器就可以跨容器軟件將要運(yùn)行的任意主機(jī)上實(shí)現(xiàn)可移植性。只要用戶能夠確保每一臺(tái)基礎(chǔ)設(shè)施即服務(wù)(IaaS)主機(jī)上都部署了相同可用的操作系統(tǒng)和容器軟件,那么這種可移植性一般來說就會(huì)正常發(fā)揮作用。但如果用戶無法確保上述要求,那么容器就根本無法保持可移植性。
對(duì)于涉及容器技術(shù)的多云規(guī)劃來說,可選擇都基于相同容器主機(jī)操作系統(tǒng)和框架的公共云資源和私有云資源。如果用戶所使用的操作系統(tǒng)或中間件功能并未在所有的操作系統(tǒng)發(fā)布版本中得到支持,那么就必須特別謹(jǐn)慎了。通過使用標(biāo)準(zhǔn)基,用戶可能可以對(duì)其容器化的應(yīng)用實(shí)現(xiàn)跨云平臺(tái)的遷移而不會(huì)出現(xiàn)執(zhí)行問題。否則,用戶則需要避免多云環(huán)境部署或需要遷移至虛擬機(jī)。
多云環(huán)境容器的運(yùn)行效益
盡管存在著一些規(guī)劃方面的挑戰(zhàn),用戶還是能夠在多云部署中實(shí)現(xiàn)容器的一些優(yōu)勢(shì)。
例如在運(yùn)行方面,Docker和其他容器系統(tǒng)會(huì)包括一個(gè)配置和參數(shù)架構(gòu),這個(gè)架構(gòu)會(huì)將所有工作負(fù)載運(yùn)行所需的組件都打包在一個(gè)單一的軟件包中,從而更便于針對(duì)特定環(huán)境調(diào)試容器鏡像。在虛擬機(jī)系統(tǒng)中,配置和參數(shù)都是根本不在管理范圍內(nèi)的——虛擬機(jī)的操作系統(tǒng)、驅(qū)動(dòng)程序和應(yīng)用程序都是完全與管理和底層主機(jī)隔離的。
因此,運(yùn)行人員必須為每一家云供應(yīng)商準(zhǔn)備一個(gè)不同的鏡像,從而帶來了更多的工作量和導(dǎo)致錯(cuò)誤的機(jī)會(huì)。這一點(diǎn)不同可以實(shí)現(xiàn)不同云供應(yīng)商之間的容器可移植性。但是,用戶將需要確保所有特定供應(yīng)商組件與應(yīng)用程序配置之間的無關(guān)性,以便***限度利用這個(gè)功能。換而言之,容器對(duì)特定供應(yīng)商API或其他功能的依賴程度越高,遷移的難度也越大。
網(wǎng)絡(luò)與多組件應(yīng)用
網(wǎng)絡(luò)是容器技術(shù)發(fā)揮其優(yōu)越性的另一個(gè)領(lǐng)域。多組件應(yīng)用(例如那些基于微服務(wù)器的應(yīng)用)都是多云計(jì)算環(huán)境中常見的應(yīng)用,而那些應(yīng)用組件都必須處于聯(lián)通狀態(tài)。虛擬機(jī)沒有特定的網(wǎng)絡(luò)模式;應(yīng)用在操作系統(tǒng)和中間件的支持下能夠完成相當(dāng)多的工作 。這就要求運(yùn)行人員為應(yīng)用組件建立一個(gè)網(wǎng)絡(luò)以便能夠在多云環(huán)境中實(shí)現(xiàn)應(yīng)用程序組件在每一個(gè)IaaS平臺(tái)上的可用性。不同的是,容器設(shè)定了一個(gè)通用的子網(wǎng)模型來實(shí)現(xiàn)連接,這種做法更易于管理。
管理人員可以更容易地?cái)U(kuò)展容器系統(tǒng)并通過容器集群提高其彈性。一個(gè)集群為應(yīng)用組件定義了一系列的托管點(diǎn),并且它們都是便攜的。但是,在多云環(huán)境中還是需要花一點(diǎn)功夫提高容器組件的可擴(kuò)展性和和彈性,因?yàn)橐话闱闆r下集群會(huì)共享一個(gè)子網(wǎng)。當(dāng)他們需要跨越云平臺(tái)邊界時(shí),這就可能會(huì)帶來挑戰(zhàn),因?yàn)椴煌墓?yīng)商會(huì)使用不同的子網(wǎng)劃分規(guī)則或限制(例如不同節(jié)點(diǎn)之間的負(fù)載平衡),而這些規(guī)則或限制會(huì)影響集群的功能。
對(duì)于擴(kuò)展規(guī)模和提高跨多云部署中多組件彈性來說,虛擬機(jī)通常是更好的選擇。這是因?yàn)樘摂M機(jī)需要更精細(xì)的網(wǎng)絡(luò)詳細(xì)信息,從而降低遷移至另一家供應(yīng)商時(shí)出現(xiàn)錯(cuò)誤的風(fēng)險(xiǎn)。
諸如Docker之類的單個(gè)容器平臺(tái)并不適用于多云環(huán)境中的可移植性,至少不適用于實(shí)際的IT運(yùn)營(yíng)環(huán)境。但是,諸如Kubernetes之類的開發(fā)運(yùn)營(yíng)工具可以解決這一問題,而且這些工具有可能會(huì)發(fā)展成為支持虛擬云的概念,或者是可以跨越私有云和多云的一個(gè)單一模式。