容器是VMworld 2015大會最為熱門的話題之一。VMware很清楚地看到了近期容器與虛擬機混搭將會快速進入企業數據中心。IT組織仍舊需要捍衛安全性以及數據管理需求,即使是容器化的應用也不例外。VMware已經在虛擬機端交付了容器,而且相關設計已經取得成功,對虛擬化及云管理解決方案進行了擴展以支持(而且我認為最終會同化)企業集裝箱化項目。
VMware全新的vSphere集成容器(VIC)使得管理及確保運行在虛擬機(稱之為虛擬容器主機)中容器的安全性幾乎和管理及確保傳統虛擬機的安全性沒什么兩樣。VIC作為第一流的IT管理對象出現在VMware管理工具中,繼承了vSphere 提供的眾多虛擬機管理功能,包括強大的安全性。這使得所有VMware顧客都能夠很平滑地采用容器技術。
然而,我們認為應用容器真正的轉折點將是容器超越簡單的無狀態計算引擎并直接處理持久性數據之時。到那時,容器必然受限于范圍及規模。
容器中有什么?
簡言之,容器在其進程內封裝并隔離了應用代碼,使得代碼認為自己獨享一臺機器,將所有的系統服務調用轉交給容器主機。由于容器實際上是進程,因此很多(可能數以千計)容器能夠很輕松地共享單臺物理或虛擬服務器。
應用認為他們擁有一個完整運行的操作系統(就像是在虛擬機內運行),但這些應用實際是在共享主機操作系統。應用之間的隔離性要低于在虛擬機內運行時的隔離性,但效率更高(因為每個容器并沒有運行自己的操作系統)。
容器還有一些其他的優勢。容器在用戶空間內運行,因此破壞、阻礙或者造成內核級崩潰的可能性很小。容器能夠被快速復制,通常是被緩存,而且很容易調整。容器幾乎能夠在任何地方構建(比如開發人員的MacBook)并在任何地方運行(比如亞馬遜Web服務)。這意味著容器在最初設計時就是無狀態的,不包括需要保護或保留的數據。
最初設計容器是為了構建微服務。微服務架構非常適合設計為在云中運行的應用。這些新應用是無狀態的,因為它們并不保存內部數據而且能夠根據運營需求動態調整。
然而,集裝箱應用存儲仍舊是一個棘手問題。運行在容器內的應用能夠訪問本地操作系統存儲,但如果容器被遷移(或者克隆、復制等等)到另一臺容器主機,那么將不會帶走當前主機上的數據。因此,無狀態容器并不適合需要可靠及持久數據服務的應用。在微會話級將數據保留在云存儲比如亞馬遜S3中的微服務運行的很好,但大多數應用的需求并非僅限于此。
存儲問題解決之道
這意味著容器在未來的數據中心中只是一個小角色,僅限于開發人員使用或者全新的云托管微服務應用?我們認為容器的優勢極具吸引力,使得企業數據中心無法忽略,而且正如你可能已經猜測的那樣,容器數據管理產品正在脫穎而出。
例如,ClusterHQ公司的Flocker使得容器能夠掛載唯一的Flocker數據集并能夠跟隨容器一起移動。Flocker對數據集進行分區并將共享的塊存儲掛載到所有的容器主機。采用該解決方案,容器成為“無狀態的”而且能夠很容易地承載幾乎所有應用,即使是數據庫比如MongoDB與MySQL。
Flocker 1.3支持OpenStack Cinder塊存儲而且來自EMC、NetApp、Hedvig以及Nexenta等廠商的自定義驅動程序很快就會出現。在VMworld大會上,VMware宣布支持Flocker,這樣容器就能夠使用vSphere掛載的任何存儲。這還包括vSAN以及支持虛擬卷的第三方存儲。上述場景非常有趣,因為他們增加了明確的存儲服務,比如針對每個容器所使用存儲的QoS。
在其有限的無狀態構成中,容器以及虛擬機各司其職。既然容器直接支持虛擬存儲,那么hypervisor廠商就需要提供高附加值功能。既然未來的數據中心可能是虛擬機/容器環境的混合體,在虛擬機中會存在大量的容器(并支持混合、以DevOps為中心的云運營),那么hypervisor廠商提供具備整體管理方案的機會非常大。
容器正在幫助我們構建一個越發流暢、敏捷但最終很復雜的環境。這意味著我們需要更好的安全工具,更動態的網絡以及適應性更強的存儲。一定要讓我們知道IT組織如何適應并采用容器產品,以及廣泛采用容器技術存在哪些挑戰。