Zun是Openstack中提供容器管理服務(wù)的組件,建立于2016年6月。Zun的目標(biāo)是提供統(tǒng)一的Openstack API用于啟動和管理容器,支持多種容器技術(shù),比如Docker、Rkt、Clear container、 Kata container以及用戶自定義的容器技術(shù)。由于容器技術(shù)的火熱,Zun得以在OpenStack中迅速發(fā)展,通過與Keystone、Neutron、Cinder、Glance以及其它核心的OpenStack組件集成, 實現(xiàn)容器的網(wǎng)絡(luò)、持久化存儲等功能。OpenStack架構(gòu)中的網(wǎng)絡(luò)、存儲以及身份驗證工具全部適用于容器體系,從而確保容器能夠滿足安全與合規(guī)要求。
一、發(fā)展歷史 OpenStack平臺主要有如圖所示的幾個方案支持容器技術(shù):Nova-docker driver、
Heat-docker-plugin、Magnum等。
Nova Docker driver方案將容器當(dāng)成虛擬機一樣進(jìn)行操作,通過增加nova-docker驅(qū)動,實現(xiàn)容器生命周期的管理操作。但是容器和虛擬機存在較大差異,通過類似虛擬機的方式管理容器,導(dǎo)致無法對接很多容器的原生接口。
Heat-docker-plugin方案不依賴于Nova的調(diào)用,而是通過 OpenStack Heat進(jìn)行編排,使用 Heat Docker plugin插件, 編輯Heat Templates 設(shè)定 Docker 的參數(shù),在虛擬機上管理容器。雖然可以使用 Docker API 提供的所有功能,但是在虛擬機上使用 Docker,無法實現(xiàn)資源調(diào)度,需要較多的配置工作,無法實現(xiàn)規(guī);募汗芾 。
Magnum是OpenStack中提供容器集群部署功能的服務(wù),通過Heat部署k8s虛擬機集群,調(diào)用coe接口管理容器。Magnum立項之初,以CaaS為宗旨,即“容器即服務(wù)”。后續(xù)發(fā)展過程中,Magnum將集群管理和容器管理兩大功能進(jìn)行分離,magnum專注于容器的集群管理。
而容器的管理則獨立出來,衍生出OpenStack Zun這個新的項目。Zun將容器作為一種OpenStack資源進(jìn)行管理,并通過集成OpenStack的其他服務(wù),為用戶呈現(xiàn)統(tǒng)一的、簡化的API接口,無需關(guān)心不同容器技術(shù)之間的差異。
二、基礎(chǔ)架構(gòu) 下面的Zun架構(gòu)圖,可以更好地理解Zun與OpenStack各組件之間的關(guān)系。
OpenStack 基礎(chǔ)設(shè)施層:
Zun API: 處理 REST請求并檢查輸入?yún)?shù)
Zun Compute: 資源調(diào)度與容器管理
Keystone: OpenStack的認(rèn)證組件
Neutron: 為容器提供網(wǎng)絡(luò)
Glance: 用于存儲容器鏡像
Cinder: 提供容器數(shù)據(jù)卷,用于持久化存儲
Placement:統(tǒng)一的資源管理,比如資源的類型、記錄、分配、消費等。也就是說OpenStack中的虛機、裸機、容器實例,既資源共享,也存在資源競爭。
Horizon:官方的界面管理,zun-ui作為其插件,將容器操作集成到界面中。
多種運行時:
Runc: Docker原生支持的運行時
Clear Container&Kata:安全容器,結(jié)合了輕量級虛擬機的優(yōu)勢
Firecrocke:一種運行多租戶容器服務(wù)的新虛擬化技術(shù)
Others:用戶自定義的容器技術(shù)
編排層:
Heat: 容器資源集成到heat資源模板
Kubernetes: 通過Virtual Kubelet工具,將zun-compute node作為 k8s的工作節(jié)點,為k8s提供serverless容器服務(wù)。
三、組件關(guān)系 在OpenStack發(fā)展過程中,虛機、裸機、容器逐漸成為三大主流的資源實例。終端用戶采用裸機與虛擬機系統(tǒng),還是容器技術(shù)?
如上圖所示,Nova是管理虛擬機的創(chuàng)建、啟動、刪除等的服務(wù);Ironic是管理裸機安裝部署的服務(wù);而Zun是容器管理服務(wù)。虛機、裸機、容器三者可以運行在同一框架之內(nèi)!
四、功能優(yōu)點 Zun集成了多個OpenStack服務(wù),其中Keystone、Neutron、Kuryr-libnetwork是運行Zun所必須的服務(wù),它們分別為Zun提供認(rèn)證、網(wǎng)絡(luò)、neutron網(wǎng)絡(luò)與docker網(wǎng)絡(luò)之間的連接。集成OpenStack服務(wù)的優(yōu)點在于,可以借助于OpenStack已存在的功能來擴展容器功能。
例如Zun容器可以使用Neutron分配IP地址,可以在Nova實例所在的隔離網(wǎng)絡(luò)環(huán)境中創(chuàng)建容器,實現(xiàn)虛擬機和容器的單網(wǎng)絡(luò)平面部署。虛擬機的網(wǎng)絡(luò)安全組,也實用于Zun容器。在實際的業(yè)務(wù)場景中,通常需要對運營數(shù)據(jù)進(jìn)行持久化存儲,Zun通過與OpenStack Cinder集成解決這個問題。 創(chuàng)建容器時,用戶可以選擇將Cinder卷掛載給容器。 Cinder卷可以是租戶中的現(xiàn)有卷或新創(chuàng)建的卷。每個卷將被綁定到容器文件系統(tǒng)路徑中,并且存儲在該路徑下的數(shù)據(jù)將被持久化。
在Orchestration方面,與其他提供內(nèi)置編排的容器平臺不同,Zun使用外部編排系統(tǒng)來實現(xiàn)此目的,例如Heat與Kubernetes。通過使用外部協(xié)調(diào)工具,最終用戶可以使用該工具提供的DSL定義他們的容器化應(yīng)用程序。
Zun實現(xiàn)與 Glance、Neutron、Cinder等組件的集成,但并不實現(xiàn)對容器編排引擎(Container Orchestration Engines)的部署調(diào)度。綜上,Zun提供了一種OpenStack + 容器的解決方案,不僅將多個OpenStack服務(wù)與容器技術(shù)有效地結(jié)合到一起,提高了OpenStack管理容器的能力,而且簡化了容器的使用,擴展了容器的功能。同時Zun社區(qū)的各項功能正在開發(fā)、補全當(dāng)中,值得期待。
五、中興通訊持續(xù)社區(qū)貢獻(xiàn) 中興通訊作為OpenStack基金會黃金會員和主要代碼貢獻(xiàn)者之一,致力于推動OpenStack的演進(jìn)和發(fā)展。針對Zun社區(qū),中興通訊bp完成數(shù),bug修復(fù)數(shù)都位居前列。同時,中興通訊在Rocky、Stein等多個版本單項項目負(fù)責(zé)人(PTL),為Zun項目的發(fā)展,做出了卓越的貢獻(xiàn)。未來,中興通訊將不斷加大對開源社區(qū)的投入,并積極尋求落地商用的機會。