什麼是Zun? OpenStack容器管理,瞭解一下
OpenStack是業界主流的開源雲管理平臺,旨在提供實施簡單、可大規模擴充套件、豐富、標準統一的雲平臺。全球數百家大品牌企業依靠OpenStack每天運營業務,從而降低成本,並更快地行動。Zun即OpenStack中提供容器管理服務的元件,於2016年6月建立。
什麼是Zun
作為提供容器管理服務的元件,Zun允許使用者無需管理伺服器或叢集即可快速啟動和執行管理容器,通過與Neutron、Cinder、Keystone以及其它核心OpenStack服務相整合以實現容器的快速普及。通過這種方式,OpenStack的原有網路、儲存以及身份驗證工具將全部適用於容器體系,從而確保容器能夠滿足安全與合規性要求。
Zun計劃支援多種容器技術,如Docker、Rkt、clear container等,目前已經完成對Docker容器技術的支援。
為什麼選擇Zun
目前,在OpenStack中,支援容器技術主要有如下幾個主流方案:Nova Docker driver、Magnum等。
- Nova Docker driver方案
該方案將容器當成虛擬機器一樣進行操作,通過增加 Nova Docker driver,實現對Docker容器實施啟停、建立等類似常規虛擬機器的操作。該方案的缺點在於,由於Docker和虛擬機器終究是存在一部分差異的,通過類虛擬機器方式來操作容器,會導致容器的許多功能無法實現,例如容器關聯、埠對映等功能。
- Magnum方案
Magnum是OpenStack中提供容器叢集部署功能的服務,Magnum通過Heat來部署虛擬機器和物理機,從而組成叢集,然後呼叫COE介面完成容器的部署。在Magnum專案建立之初,專案目標以CaaS為宗旨,即“容器即服務”;在後續的發展中,Magnum功能大多集中在容器的叢集部署上。
- Zun方案
Zun將容器作為一種OpenStack資源來進行管理,並通過整合OpenStack的其他服務,為使用者呈現統一的、簡化的API介面,使用者可以通過這些介面來建立、管理容器,而不需要關心不同容器技術之間的差異。
Zun集成了多個OpenStack服務,其中Keystone、Neutron、Kuryr-libnetwork是執行Zun所必須的服務,它們分別為Zun提供認證、網路、neutron網路與docker網路之間的連線。對於OpenStack使用者而言,他們會發現學習使用Zun容器是一件相當容易的事。
整合OpenStack服務的優點在於,可以藉助於OpenStack已存在的功能來擴充套件容器功能,例如,預設情況下,Zun容器可以使用Neutron分配的IP地址,可以使用由Keystone提供的認證服務。將Zun與Neutron一起使用,可以在Nova例項所在的隔離網路環境中建立容器。VM的Neutron功能(即安全組,QoS)也可用於Zun容器。在實際業務中,經常存在需要長久儲存資料的場景。通常常用的方法是利用外部服務為容器提供持久卷。Zun通過與OpenStack Cinder整合解決了這個問題。 建立容器時,使用者可以選擇將Cinder卷掛載給容器。 Cinder卷可以是租戶中的現有卷或新建立的卷。每個卷將被繫結到容器檔案系統路徑中,並且儲存在該路徑下的資料將被持久化。
在Orchestration方面,與其他提供內建編排的容器平臺不同,Zun使用外部編排系統來實現此目的,例如Heat與Kubernetes。通過使用外部協調工具,終端使用者可以使用該工具提供的DSL定義他們的容器化應用程式。
藉助Heat,使用者還可以定義由容器資源和OpenStack資源組成的資源,例如Neutron負載平衡器、浮動IP、Nova例項等。
而Zun和Kubernetes則是一種互補的關係,事實上,Zun社群正在積極地推進與Kubenetes整合。目前Zun與COE整合的工作主要集中在Kubenetes上。Kubernetes使容器更易於部署、管理和擴充套件。 但是,在OpenStack上使用Kubernetes仍然需要使用者手動底層基礎設施,如虛擬伺服器叢集。 使用者需要負責初始容量規劃,例如決定VM群集大小以及正在執行的VM群集的維護。Serverless容器技術或解決方案,如亞馬遜網路服務(AWS)Fargate、Azure容器例項(ACI)和OpenStack Zun的出現,為在雲上執行容器提供了一種可行的替代方案。 Serverless方法允許使用者按需執行容器,而無需預先建立或管理自己的叢集。Zun將利用Kubernetes作為編排層,Kubernetes使用OpenStack Zun來提供“Serverless”容器。
Zun中引入了Container與Capsule兩個概念,Container負責整合對接Docker或其他容器引擎技術,Capsule的概念有點像Kubernetes Pod,代表一組容器。 Capsule用於將多個需要彼此緊密合作的容器進行分組,以實現業務目標。
Zun不準備實現COE提供的很多先進的功能(例如容器保活、負載均衡等),而是專注於提供基本的容器操作(CRUD),並保持和OpenStack的緊密整合。
與Nova Docker driver方案的比較:
Zun目標在於解決 Nova Docker driver方案存在的問題,獨立於 Nova 之外實現 Docker 部署排程框架,自身實現與 Glance、Neutron、Cinder等元件的整合,但並不實現對容器編排引擎(Container Orchestration Engines COE)的部署排程。Nova-docker通過Nova API訪問容器,而Zun不受Nova API的限制。
與Magnum方案的比較:
Zun和Magnum的差異在於Zun專注於提供管理容器的API,而Magnum則主要是提供部署和管理容器編排引擎(COE)的API。
Zun的基礎架構
下面的Zun架構圖,可以更好地理解Zun與OpenStack各元件之間的關係。
圖1:Zun架構圖
綜上,Zun提供了一種OpenStack + 容器的解決方案,不僅將多個OpenStack服務與容器技術有效地結合到一起,提高了OpenStack管理容器的能力,而且簡化了容器的使用,擴充套件了容器的功能。同時,Zun社群的各項功能正在開發、補全當中,值得期待。
中興通訊作為OpenStack基金會黃金會員和主要程式碼貢獻者之一,致力於推動OpenStack的演進和發展。針對Zun社群,中興通訊bp完成數居第一位,修復bug數居第一位,提交程式碼次數居第一位,程式碼審閱數居第二位。同時,中興通訊在Rocky與Stein版本單項專案負責人(PTL),為Zun專案的發展,做出了卓越的貢獻。未來,中興通訊將不斷加大對開源社群的投入,並積極尋求落地商用的機會。