Magnum是OpenStack中一個提供容器集羣部署的服務。html
Magnum是一個Pass層的OpenStack項目。node
Magnum使用Heat部署一個包含Docker和Kubernetes的操做系統鏡像,python
讓容器集羣運行在虛擬機(Virtual Machine)或者裸機(Bare Metal)中。git
Magnum項目建立之初,項目目標以Caas爲宗旨,即容器即服務。後端
但在後續的發展過程當中,社區更傾向於分離容器的集羣部署功能和Docker容器集羣的管理功能。架構
所以Magnum從新修改了項目目標,Magnum自己專一於容器的集羣部署功能。框架
另外一個正在孵化中的項目Zun專一管理Docker容器集羣。ui
Magnum 由三個代碼庫組成:spa
Magnum: http://git.openstack.org/cgit/openstack/magnum操作系統
Python-magnumclient: http://git.openstack.org/cgit/openstack/python-magnumclient
Magnum-ui: http://git.openstack.org/cgit/openstack/magnum-ui
Magnum主要提供兩個服務:Magnum API 和 Magnum Conductor。
Python-magnumclient封裝Magnum Rest API向外提供Magnum的接口調用,同時提供CLI功能。
Magnum-ui提供一個Horizon的插件,使用Django和AngularJS實現Magnum的界面操做。
Container:Docker容器。
Node:容器運行的節點,能夠是裸機、虛擬機甚至容器。
Bay:運行容器的一組node的集合,是Magnum中容器調度的基本單元。
BayModel:用來存儲Bay的模板的對象,相似於Nova中的flavor。
Pods:運行在同一個Node上一組容器集合,這是Kubernetes中的一個概念。
Service:由一個或者多個 Pod 組成,表明一個抽象的應用服務,對外呈現爲同一個訪問接口,
這樣訪問能夠經過 service 來路由,而無需具體知道 Pods 的地址。
ReplicationController:簡稱RC,RC 對 pod 指定副本數,能夠保證一直存在該數目的副本存在並運行。
Magnum自身做爲一套 API 框架,自己調用其它的容器管理平臺的 API 來實現功能,
目前支持的後端包括 Kubernetes、Swarm和Mesos。
若是說 Nova 是一套支持不一樣 Hypervisor 虛擬機平臺的 API 框架,那麼 Magnum 則是支持不一樣容器機制的 API 框架。
Magnum API提供資源的Rest接口。
Magnum Conductor是整個項目的核心,首先經過Heat部署虛擬機實例或者裸機實例上,
而後經過Cloud init在虛擬機實例或者裸機實例上,調用Kubernetes、Swarm或者Mesos部署容器集羣。
下載DevStack,並在DevStack目錄下添加local.conf,文件內容以下:
[[local|localrc]] DATABASE_PASSWORD=password RABBIT_PASSWORD=password SERVICE_TOKEN=password SERVICE_PASSWORD=password ADMIN_PASSWORD=password # magnum requires the following to be set correctly PUBLIC_INTERFACE=eth0 enable_plugin magnum https://git.openstack.org/openstack/magnum # Enable barbican service and use it to store TLS certificates # For details http://docs.openstack.org/developer/magnum/dev/dev-tls.html enable_plugin barbican https://git.openstack.org/openstack/barbican VOLUME_BACKING_FILE_SIZE=20G
執行./stack.sh便可完成Magnum服務的安裝。
IRC Channel: #openstack-containers on freenode
Weekly Meetings: 北京時間每週三的00:00 #openstack-meeting-alt
編者注:本文來自OpenStack開源團隊工程師向新勇