在 vSphere 中創(chuàng)建一個 Linux 虛機就可以在上面運行容器環(huán)境了,這是最直接的方式,但是這種方式對于資源的利用率不高:
- 在創(chuàng)建虛機時就要預估虛機的大小,容量不夠時還需要對虛機擴容;
- 當容器被刪除時,釋放的資源卻仍然被虛機保留著,沒有及時回收利用;
- 開發(fā)人員需要花費一定的精力來創(chuàng)建和管理這些運行容器的虛機環(huán)境,安裝或升級容器軟件等等。
vSphere 6.5 中新增了內置的容器支持 - vSphere Integrated Containers (VIC):
管理員負責創(chuàng)建 Virtual Container Host (VCH),VCH 本質上就是一個 vApp,其中可以有多個 Linux 虛機,每個虛機對應一個容器。
開發(fā)人員不再需要維護容器的虛機環(huán)境,他只需要像往常那樣使用容器命令來創(chuàng)建容器就可以了,VIC Engine 提供了 REST API 接口來接收并執(zhí)行開發(fā)人員的命令。
在 VIC 的管理下,容器的使用和管理變得更加簡便高效:
首先是管理員和開發(fā)人員的職責完全隔離開了,管理員負責創(chuàng)建 VCH 來管理和維護 Container Host,開發(fā)人員感覺不到也不需要關心容器究竟是在物理還是虛擬化環(huán)境中運行。
管理在創(chuàng)建 VCH vApp 時就給它分配了可用的資源,這些資源是可以動態(tài)分配和回收的,當容器被刪除時,它所對應的虛機資源也會被及時釋放。
可以利用 vSphere 環(huán)境中成熟的安全性、高可靠、運維管理、容災等功能,來為容器運行提供一個更加安全可靠的環(huán)境;管理員還是可以使用熟悉的 vSphere 管理平臺來管理容器運行環(huán)境。
漲姿勢:vApp
vApp 是 vSphere 環(huán)境中管理多層應用(Multi-Tiered Application)的一種概念或對象。一個復雜應用往往是由多個虛機組成的,如數據庫、應用服務器、Web服務器等,vApp 可以把這些虛機組成一組,作為一個整體來進行管理。管理員可以給 vApp 分配資源,把 vApp 作為一個整體來啟動或關閉等,當然需要指定 vApp 中各個虛機的啟動順序。
VIC 使用樣例
以下用一個簡單的例子來說明如何使用 VIC 來創(chuàng)建容器。
- 下圖是 vSphere Web Client 的界面,管理員已經建好了一個 VIC_Demo 的 Virtual Container Host,在注釋(Notes)Porlet 中也指明了 DOCKER_HOST 的取值為 tcp://10.21.136.7:2376。
- 開發(fā)人員只需要設置好 DOCKER_HOST 變量,就可以使用 docker 命令來創(chuàng)建和管理容器了。在下面的例子中,開發(fā)人員運行了一個 hello-world 的容器,并且使用 ps 命令查看了容器的運行狀態(tài)。
- 在管理員的控制臺上,注意 VIC_Demo (Virtual Container Host) 下多了一個虛機 9cd7b447a9ee,它對應的就是剛才創(chuàng)建的 hello-world 容器,在 Container Porlet 中也可以看到對應的容器名字和相關信息。
VIC 開源項目
VIC 對于 vSphere 用戶是免費的,大家可以去 github 上下載(鏈接如下)
http://github.com/vmware/vic-product
VIC 共有三個組件:
- VIC Engine
VIC 的核心組件,通過 Virtual Container Host 來支持容器運行,提供 REST API 來為開發(fā)人員提供熟悉的容器開發(fā)環(huán)境,把通常的 docker 命令轉換成相應的虛機和容器操作。
- Harbor
企業(yè)容器 Registry,是容器鏡像的“倉庫”,提供容器鏡像的下載服務。(PS:這是 VMware 中國研發(fā)團隊開發(fā)的哦。)
- Admiral
容器管理 Portal,提供 GUI、API 和命令接口來對容器進行調配、管理和監(jiān)控。
雖然 VIC 用起來這么簡單,可能有人會問在虛機中運行的容器,會不會有額外的資源開銷呢?其實大家不必擔心,VIC 采用了兩項 VMware 的獨門技術來達到跟普通容器同等水平的資源消耗。
Photon OS:光子操作系統(tǒng)是 VMware 為容器量身定制的 Linux 操作系統(tǒng),專門針對 vSphere 環(huán)境進行了優(yōu)化,因為運行在虛機上,只需要包含少數幾種虛擬硬件驅動就可以了,最精簡的版本占用的空間只有25M。
Instant Clone:是 vSphere 6.0 開始新增的功能,它可以把現有正在運行的虛機做一個即時克隆,新生成的虛機完全重用原虛機的內存鏡像,只有對內存寫操作時才會做針對那塊內存做一個復制。即時克隆生成虛機的速度是秒級的,能夠達到跟容器生成同樣快的速度;同時需要額外占用的內存空間也非常少。
VIC 在性能和資源消耗方面跟普通的容器技術差不多,但是在安全性、高可靠、運維管理、容災等方面提供了更完善的運行環(huán)境和解決方案,對于已經是 vSphere 的用戶來說,VIC 是嘗試容器技術的最佳選擇。而且 vSphere 的支持服務中也包含了對于 VIC 的支持,大家盡可以放心地使用這一新功能。