本文介紹了vmware最近宣布的兩項容器解決方案,分别是vic(整合了vsphere的容器技術vsphere integrated containers)和photon平台,并與現有方案進行了對比。
然而,vmware提出的大量的新技術和新術語對于傳統的vmware管理者們、架構師們和顧問們帶來了新的挑戰。本篇博文嘗試搞清楚這些新的方案,并與現有方案進行對比。
<a></a>

第一個方案是vic(整合了vsphere的容器技術vsphere integrated containers),這是vmware提出的一個進化的容器方案。根據vmware的介紹,vic的理念是,容器本質上是"一個打包了依賴的、用于執行的、存在于私有命名空間private namespace的、資源受限的二進制可執行檔案",而容器宿主container host是“一個包含了必要的存儲和網絡架構的計算資源池,用于管理容器”。如果你接受這樣一個前提的話,那麼是什麼構成容器和容器宿主并不重要,隻要開發者們可以使用類似docker apis這樣的标準容器apis來通路這些資源就可以了。
vic是從bonneville項目發展而來,它将容器技術解構成了若幹基本能力,然後通過組合vmware的esxi、photon os和instant clone等技術來替換這些能力。這個解決方案可以将傳統的vsphere架構和容器技術連接配接起來,使得vmware管理者使用熟悉的vmware工具(如vsphere)來管理這些特定類型的容器。
通過下面這張圖來對比一下docker容器技術和vic。
在vic架構中,esxi虛拟層(hypervisor)替代linux伺服器作為docker容器的主控端作業系統。為了替代linux核心隔離機制來建立容器,如namepaces和cgroups,vic借助了esxi的硬體虛拟化機制來建立容器虛拟機container vms。為了使傳統的vsphere虛拟機具備和linux容器相比對的啟動速度,vic使用photon os的一個“微小版本”pico version作為vm,并建立一個0開銷的拷貝,稱為jevm(just enough vm)。jevm是一種新型的容器vm,共享父虛拟機的記憶體。當記憶體頁發生改變的時候,寫時拷貝copy-on-write操作将為子虛拟機建立一個新的記憶體頁。每當一個新的容器建立時,都會重複這一過程。
vic的其中一個優勢是,可以使用現有的工具(如vcenter)來管理容器主控端,原因是容器主控端本質上就是一台esxi主機或者vsphere叢集。這意味着vic可以利用vsphere的進階功能,如ha、vmotion和分布式資源排程distributed resource scheduling(drs)。我們把這種抽象稱為虛拟容器主控端virtual container host。vmware将vih定義為“具有完全動态邊界的容器終結點container endpoint with completely dynamic boundaries”,在這個邊界内,vsphere資料總管處理容器如何放置,進而虛拟docker主控端可以是一個完整的vsphere叢集,也可以是這個叢集的一部分”。這對于有些人可能很容易混淆,我的了解是,drs允許容器虛拟機可以在vsphere叢集中的esxi主控端之間來回遷移。這樣一來,我們可以把托管傳統虛拟機的vsphere叢集稱為虛拟的vm主控端virtual vm host。
作為容器終結點,vih機制向開發者暴露了docker apis,使得他們與vic互動的方式和與基于linux的docker容器的互動方式是完全相同的。同時,vih和vic執行個體可以通過vsphere網頁用戶端管理,就像傳統的vsphere資源一樣。
來自vmware的georg hicken提供的這張幻燈片很好地做了總結:
如果說vic是針對從傳統虛拟機過渡到容器的客戶的解決方案,那麼photon平台就是針對完全使用容器和kubernetes、mesos等容器管理工具的客戶的解決方案。photon平台被設計來提供可擴充性和高性能,就像“google風格”的資料中心架構一樣。在photon平台中,為了完成這個目标,vmware将傳統的esxi虛拟層替換為一種新型的輕量級的“microvisor”,将容器作為應用釋出的基本單元,并使用一種新型的、經過優化的容器管理工具,稱為photon控制器photon controller。
了解photon平台的一個好方法就是與另一種容器架構比較,比如coreos的tectonic平台。
圖中的photon machine是一種新的基于esxi的微虛拟層microvisor,它使用了photon os,提供了容器主控端作業系統和容器運作時container runtime。剛開始這可能是令人疑惑的,因為在tectonic平台中,容器主控端作業系統是基于linux的最小化系統coreos,而容器運作時是不同的,可以是rkt,也可以是docker。在vmware術語中,容器主控端作業系統是微虛拟層,容器運作時是photon os。
從這張圖往上看,photon controller是一種分布式的控制層control plane和資料總管resource manager,用來管理大量的photon machines。單個控制器monolithic controller,如vcenter,可擴充性往往存在一定的局限,而photon controller沒有這種局限。例如,vic就是使用vcenter來管理的容器解決方案,具有中等的可擴充性,而photon平台則是一種适用于大規模容器的架構。
另外,我建議讀者們閱讀以下關于vic和photon平台的文章:
<a href="https://blogs.vmware.com/vsphere/2015/08/how-to-choose-the-best-infrastructure-stack-for-your-cloud-native-applications.html">如何為你的雲原生應用選擇最好的架構</a>
<a href="https://blogs.vmware.com/cloudnative/author/ben_corrie/">bonneville項目和vic</a>
<a href="https://blogs.vmware.com/vsphere/2015/10/vsphere-integrated-containers-technology-walkthrough.html">vic技術一覽</a>
<a href="http://blogs.vmware.com/cloudnative/vmware-photon-controller-deep-dive/">深入vmware的photon controller</a>
本文來自雲栖社群合作夥伴“linux中國”
原文釋出時間為:2013-04-02.