OpenStack Magnum如何部署Docker Swarm等容器
OpenStack Magnum通常用于部署和監(jiān)控容器——如Docker Swarm、Google Kubernetes 和 Apache Mesos等,但是除此之外這個(gè)項(xiàng)目還有一些其他有用工具。
易于部署,并且體積要比hypervisor小很多,這些都是容器技術(shù)日益流行的原因,此外,單個(gè)容器只需要完成特定任務(wù)。現(xiàn)在最為常見(jiàn)的三種容器是Docker Swarm、Google Kubernetes和Apache Mesos。
使用容器技術(shù),管理員能夠部署完整應(yīng)用或者是應(yīng)用的重要組成部分,并且其體積只有幾十MB。容器啟動(dòng)過(guò)程只需要幾秒鐘,而hypervisor需要數(shù)分鐘才能夠完成啟動(dòng)過(guò)程。
容器運(yùn)行在主機(jī)操作之上,因此其中包含了一個(gè)迷你操作系統(tǒng)。這種架構(gòu)是必要的,因?yàn)椴徽摪惭b何種應(yīng)用程序,都需要運(yùn)行在底層操作系統(tǒng)之上。但是不同于hypervisor,容器不會(huì)額外的系統(tǒng)開(kāi)銷(比如模擬硬件)。
之前容器只能工作在Linux平臺(tái)上,而現(xiàn)在其也能夠支持Windows Server 2016了。
OpenStack和容器
最為常見(jiàn)的容器使用方式就是下載完整系統(tǒng),之后立刻開(kāi)始進(jìn)行工作。比如,管理員需要?jiǎng)?chuàng)建并運(yùn)行Ubuntu虛擬機(jī)或者Apache Spark環(huán)境,那么只需要安裝Docker,之后從Docker公共鏡像庫(kù)中下載已經(jīng)封裝好的鏡像就可以了。
如果企業(yè)需要使用50種應(yīng)用,并且全部運(yùn)行在容器當(dāng)中,那么用不了多久管理員就會(huì)忘記應(yīng)用程序和容器的對(duì)應(yīng)關(guān)系,因?yàn)槿鄙偌泄芾頇C(jī)制。這種情況將會(huì)導(dǎo)致孤立容器占用資源——并且增加大量的云成本。而OpenStack Magnum可以幫助解決這種問(wèn)題。
OpenStack Magnu能夠部署容器并且對(duì)其進(jìn)行監(jiān)控記錄。此外還允許管理員對(duì)應(yīng)用程序進(jìn)行抽象,快速?gòu)?fù)制大量容器以滿足負(fù)載需求,并且在不需要的時(shí)候隨時(shí)關(guān)閉。
OpenStack Magnum
OpenStack Magnum使用非常簡(jiǎn)單。如,部署一個(gè)容器只需三個(gè)步:
1.使用OpenStack Magnum創(chuàng)建Google Kubernetes、Docker Swarm或者Apache Mesos Bay。
2.創(chuàng)建Docker Swarm Bay,Docker Swarm將會(huì)在多臺(tái)機(jī)器之間啟用集群。
3.現(xiàn)在管理員就可以運(yùn)行Docker命令來(lái)從OpenStack Glance當(dāng)中獲取鏡像,并且啟動(dòng)Docker容器了。
管理員可以使用OpenStack Glance程序來(lái)存儲(chǔ)Docker鏡像,就像hypervisor鏡像一樣。比如,只需要兩個(gè)步驟就可以下載MySQL,并將其存儲(chǔ)到Glance當(dāng)中:
docker pull mysql
ocker save mysql | glance image-create --is-public=True --container-format=docker --disk-format=raw --name mysql
OpenStack Magnum中對(duì)容器的邏輯分組稱為Bay。Bay中包含了由OpenStack編排工具Heat創(chuàng)建的一組OpenStack鏡像。Heat能夠在模板中定義云應(yīng)用需要使用的所有資源,這個(gè)集合被稱為棧,這種方式遵循了AWS CloudFormation所定義的規(guī)則。
Docker Swarm將主機(jī)資源抽象為Docker容器共享的資源池
其他OpenStack Magnum工具
在OpenStack Magnum項(xiàng)目中,還有另外兩款十分有用的工具:Kolla和Murano。
Kolla支持在容器當(dāng)中部署OpenStack。很多情況都需要這樣做,比如為了降低安裝OpenStack的復(fù)雜度等。更為常見(jiàn)的情況是為開(kāi)發(fā)人員提供一個(gè)能夠完成工作的OpenStack環(huán)境。Kolla使用Ansible完成實(shí)現(xiàn)這種功能。
Murano幫助管理員對(duì)容器鏡像進(jìn)行分類,之后添加到Horizon dashboard中。除了管理員自己定義的類別之外,還可以使用一些公共類別,比如OpenStack Community App Catalog、 Google Container Repository和Docker Hub/Registry等。這樣做的好處在于能夠極大簡(jiǎn)化使用和部署Docker Swarm、Google Kubernetes以及Apache Mesos容器的流程,并且將它們加入到Horizon網(wǎng)頁(yè)圖形界面當(dāng)。