如何在 Atomic 系統上部署OpenStack
基于docker、kubernetes部署openstack到atomic系統上
openstack的服務定義,是不是看起來很簡潔?
openstack的實際組件構成,是不是看起來很復雜?
所有的openstack服務彼此依賴,帶來了服務生命周期管理的復雜性和低效。
比如openstack的鑒權服務keystone,在已有環(huán)境上部署一個新的keystone是否會對其他服務帶來兼容性問題 是很難判斷的。用現在的工具,也是難以進行回退的。 事實上,并非只有openstack是這樣的,很多基礎設施平臺或者應用平臺都有類似的問題。
openstack生命周期管理的方式
主要分為兩類:基于包、基于image
基于包
通常使用PXE,并搭配puppet、chef、Ansilbe這樣的配置工具。基于包的方式是低效的,原因如下:
- 操作系統、物理節(jié)點的差異性
- 合布時服務間的沖突(ports,文件系統等)
- 安裝速度(大規(guī)模部署時,通過網絡下載包安裝)
- 也許有人會提虛擬機+包的方式,但是:
- 虛擬機比較重(內存、CPU、磁盤占用。啟動速度)
- 虛擬機缺乏metadata注入手段(或者需要額外的組件和代理完成這個事情)
基于image
- 解決了安裝速度慢的問題,通常會有倉庫存放image,直接下載到物理硬件上。
- 但是,由于image很大,基于image的方式,增量更新仍然很緩慢。
- 另外,基于iamge的方式并未解決opesntack服務間的復雜性問題。只是將問題提前到構建鏡像時。
除此之外,運維人員還會希望這個openstack生命周期管理系統,能夠跨bare metal、IaaS、甚至PaaS。
Atomic、Docker、Kubernetes帶來了什么
如果有一個openstack服務的生命周期管理方案能帶來以下優(yōu)點:
- 隔離、輕量、便攜、可分離
- 運行態(tài)的服務關系易于描述
- 易于運行、易于更新
- 獨立于openstack之外管理服務的生命周期
這正是docker、atomic、kubernetes組合方案所能提供的。
Docker提供了對linux容器的抽象,并提供了一種鏡像格式。通過這種鏡像格式,可以方便的分享并提供鏡像間的層次關系。另外docker還提供了docker倉庫來分享docker鏡像。 這種方式很重要,因為開發(fā)者可以發(fā)布便攜的容器鏡像,維護人員將之部署在不同的平臺。
kubernetes是開源的容器集群管理平臺。它使用master/minion結構提供給了容器的調度能力。開發(fā)者可以使用聲明式語法描述容器間關系,并讓集群管理進行調度。
Atomic項目提供給了一個安全、穩(wěn)定、高性能的容器運行環(huán)境。Atomic包含了kubernetes和docker,并運行用戶使用新的軟件更新機制ostree。
將以上三者結合起來的方案就像上圖。openstack開發(fā)者使用自己熟悉的環(huán)境進行開發(fā)(linux/vagrant/libvirt),然后向倉庫提交服務鏡像。運維人員將kubernetes配置導入生命周期管理工具,然后啟動pods和services。容器鏡像會被下載到本地并部署這些 openstack服務。由于服務是隔離的,我們可以在單臺機器上***化密度地部署openstack服務。除此之外還有其他優(yōu)點,比如回滾、部署、更新的速度等。
博客地址:http://openstack.wiaapp.cn
關于OpenStack
OpenStack是一個由NASA(美國國家航空航天局)和Rackspace合作研發(fā)并發(fā)起的,是一個開源的云計算管理平臺項目,由幾個主要的組件組合起來完成具體工作。OpenStack支持幾乎所有類型的云環(huán)境,項目目標是提供實施簡單、可大規(guī)模擴展、豐富、標準統一的云計算管理平臺。
OpenStack除了有Rackspace和NASA的大力支持外,還有包括戴爾、Citrix、Cisco、Canonical等重量級公司的貢獻和支持,致力于簡化云的部署過程并為其帶來良好的可擴展性。