本文是東京OpenStack Summit大會(huì)系列采訪的一部分,被采訪者是Ian Lewis,谷歌云平臺(tái)工程師,主要闡述了短生命周期容器的概念,作用和如何將它應(yīng)用到生產(chǎn)環(huán)境當(dāng)中。
原生云計(jì)算(Cloud-native computing)依賴于短生命周期的容器而不是固定的服務(wù)器。在短生命周期的容器中運(yùn)行應(yīng)用,解決了資源困乏的挑戰(zhàn),但同時(shí)也引入了需要新的實(shí)踐和工具去匹配這個(gè)動(dòng)態(tài)環(huán)境的問(wèn)題。谷歌的Ian Lewis將在這個(gè)月東京舉辦的OpenStack Summit上分享如何在短生命周期的容器中記錄并追蹤它們。
我們聯(lián)系了Ian,學(xué)習(xí)了DevOp團(tuán)隊(duì)是如何將短生命周期容器應(yīng)用到實(shí)踐中,如何采用新的架構(gòu)模型并且將應(yīng)用遷移到容器中,Ian提供了一些很好的點(diǎn)子,包括如何存儲(chǔ)數(shù)據(jù)、為什么服務(wù)發(fā)現(xiàn)是必要的、OpenStack開(kāi)發(fā)了什么新的開(kāi)源項(xiàng)目和如何幫助團(tuán)隊(duì)實(shí)現(xiàn)將應(yīng)用轉(zhuǎn)移到短生命周期的容器中。
Q: 為什么容器應(yīng)該是短生命周期的,短生命周期的容器可以解決什么問(wèn)題?
使用容器一個(gè)最主要的好處是在集群中它們可以很容易的運(yùn)行和管理,而不用考慮它們?cè)谑裁礃拥膶?shí)體機(jī)上運(yùn)行。這就允許你在運(yùn)維需要時(shí),透明的將一個(gè)正在運(yùn)行的應(yīng)用遷移到不同的硬件上。這種遷移容器的靈活性意味著你不能在本地一臺(tái)特定的機(jī)器上存儲(chǔ)狀態(tài),因?yàn)橐苿?dòng)的過(guò)程可能會(huì)在任何時(shí)候發(fā)生。你需要做到無(wú)論應(yīng)用在什么地方運(yùn)行都可以訪問(wèn)到存儲(chǔ)狀態(tài)信息。
Q: 實(shí)踐中什么是短生命周期?
通常來(lái)說(shuō),短生命周期的意思是你的應(yīng)用不能在本地存儲(chǔ)數(shù)據(jù),數(shù)據(jù)包括從應(yīng)用數(shù)據(jù)到日志數(shù)據(jù)。你的應(yīng)用應(yīng)該可以重啟并工作在一個(gè)新的容器鏡像中。數(shù)據(jù)需要被存儲(chǔ)在容器外部,意味著存儲(chǔ)需要使用專門(mén)的服務(wù)。
Q: 可任意支配和短生命周期的容器聽(tīng)起來(lái)很酷,只需要運(yùn)行、遷移和撤銷(xiāo)操作,但如果內(nèi)容已經(jīng)存儲(chǔ)在容器中并且一些端點(diǎn)(Endpoint)已經(jīng)被容器暴露,怎么辦呢,例如:會(huì)話狀態(tài)、API路徑和數(shù)據(jù)庫(kù)連接端點(diǎn)。那會(huì)話狀態(tài)和數(shù)據(jù)庫(kù)連接也消失了?
容器本身并不是管理狀態(tài)、API路徑和連接的銀彈。你仍然需要容器的編排管理系統(tǒng)和網(wǎng)絡(luò)來(lái)使它滿足高可用性。這也是為什么谷歌發(fā)明Kubernetes來(lái)解決這些問(wèn)題的原因。
Q: 傳統(tǒng)的部署方式依賴于持久化服務(wù)器,那應(yīng)該如何重構(gòu)服務(wù)器和應(yīng)用來(lái)實(shí)現(xiàn)遷移型的容器呢?
我認(rèn)為有兩個(gè)比較大的變化。第一是在主機(jī)外和容器外存儲(chǔ)狀態(tài)。第二是應(yīng)用應(yīng)該有方法完成服務(wù)發(fā)現(xiàn)。容器遷移意味著需要一種方式,實(shí)現(xiàn)無(wú)論服務(wù)端實(shí)際在哪里運(yùn)行,客戶端都能連接到它。
Q: 你有什么好的架構(gòu)模型推薦嗎?
使用容器時(shí),我會(huì)推薦面向服務(wù)的架構(gòu)。好處在于當(dāng)這個(gè)服務(wù)運(yùn)行得足夠小,并且能夠互相獨(dú)立地?cái)U(kuò)展或收縮時(shí),容器會(huì)非常容易被感知到。
Q: 我該如何創(chuàng)建一個(gè)短生命周期的容器環(huán)境而不是持久化的容器環(huán)境呢,什么基礎(chǔ)設(shè)施和開(kāi)發(fā)框架可以使用來(lái)安全的部署、遷移和處理容器?
可以嘗試使用集群管理工具如Kubernetes(或者Container Engine)。Kubernetes是一個(gè)容器編排管理工具,它在集群的服務(wù)端調(diào)度容器,讓容器知道它們適合的運(yùn)行時(shí)間,這些時(shí)間可能不會(huì)和服務(wù)端在同一個(gè)時(shí)間點(diǎn)。使用Kubernetes也許是不錯(cuò)的選擇。
Q: 容器如何在OpenStack中執(zhí)行?
容器編排管理引擎如Docker Swarm和Kubernetes將會(huì)在OpenStack中成為一等重要的資源,通過(guò)一個(gè)叫Magnum的API服務(wù)來(lái)實(shí)現(xiàn)。Magnum會(huì)創(chuàng)建服務(wù)端集群如同虛擬機(jī)安裝了一個(gè)集群管理工具,使用Magnum來(lái)操控容器就容易很多。
Q: 在OpenStack最新的發(fā)布版本和路徑中,有沒(méi)有關(guān)于容器管理編排和調(diào)度的?
關(guān)于這塊還有很多開(kāi)發(fā)仍在進(jìn)行中,還有很多新的特性。Magnum會(huì)被包括在OpenStack Liberty中,在這個(gè)月發(fā)布。其他工具如Kolla,它用于在容器中部署OpenStack,還有通過(guò)Application Catalog服務(wù)使應(yīng)用開(kāi)發(fā)更容易的Murano,同樣值得期待。