UnitedStack上線Atomic鏡像 讓Docker部署和管理更Easy
2015年6月18日,UnitedStack有云上線Atomic鏡像,開發(fā)者可以在UOS公有云平臺(tái)上體驗(yàn)***的Fedora Cloud Atomic容器操作系統(tǒng)。
這是繼上線CoreOS鏡像之后,UnitedStack有云對(duì)容器技術(shù)的又一有力支撐,也成為國(guó)內(nèi)目前唯一一個(gè)同時(shí)提供這兩個(gè)鏡像的IaaS廠商。
Atomic是Red Hat公司發(fā)起的以應(yīng)用為中心的操作系統(tǒng),它可以更方便地部署和管理你的Docker容器。Atomic基于成熟的底層操作系統(tǒng),保證容器運(yùn)行環(huán)境的安全,并且集成了Kubernetes、Systemd等管理工具,提供容器應(yīng)用部署的全套解決方案。對(duì)于Atomic采用的Kubernetes調(diào)度系統(tǒng),我們也將在近期推出Kubernetes系列教程,歡迎大家關(guān)注。
與傳統(tǒng)操作系統(tǒng)不同,Atomic經(jīng)過裁剪后體積更小更容易維護(hù),并且集成了SELinux安全技術(shù),讓Docker容器有更好的安全隔離,還有Gockpit等工具讓容器的部署和管理更加方便。
項(xiàng)目官網(wǎng) http://www.projectatomic.io
CoreOS是基于Chrome OS定制的Linux發(fā)行版,而Atomic是基于更成熟的RHEL和Fedora。CoreOS使用了自己研發(fā)的Fleet來管理容器生命周期,Atomic則集成了Google開源的Kubernetes調(diào)度系統(tǒng),同時(shí)提供了Geard工具來部署多個(gè)容器。Atomic也可以集成SELinux,提供更安全、專門為容器設(shè)計(jì)的運(yùn)行環(huán)境,開發(fā)者遷移到新的系統(tǒng)架構(gòu)也更加容易。
兩個(gè)操作系統(tǒng)目前都依賴Etcd做配置管理,提供容器部署和調(diào)度服務(wù),而且現(xiàn)在只支持***的Docker容器。
在UOS上啟動(dòng)Atomic系統(tǒng)非常簡(jiǎn)單,在“創(chuàng)建云主機(jī)” 中選擇***的“Fedora Cloud Atomic 22 64bit”鏡像,分配CPU和內(nèi)存后即可使用。
為了連接外網(wǎng),你可以在“公網(wǎng)IP”頁(yè)面創(chuàng)建公網(wǎng)IP。
然后在“云主機(jī)”頁(yè)面綁定剛申請(qǐng)的公網(wǎng)IP。
綁定后IP后,UOS提供了VNC終端,在瀏覽器就可以操縱你的Atomic操作系統(tǒng)了。
啟動(dòng)Atomic系統(tǒng)后,通過創(chuàng)建云主機(jī)時(shí)提供的用戶名和密碼登陸。默認(rèn)的Atomic鏡像已經(jīng)預(yù)裝了***版的Docker、Etcd和Kubernetes等工具,通過命令行就可以查看工具的版本信息。啟動(dòng)Docker服務(wù)的命令也很簡(jiǎn)單,“service docker start”。
可以看出Atomic已經(jīng)是預(yù)裝好Docker的Linux運(yùn)行環(huán)境,使用Atomic甚至比原生的CentOS或Ubuntu更加方便。所有基于Docker的容易都能很方便地運(yùn)行,下面演示在Atomic系統(tǒng)快速啟動(dòng)一個(gè)Nginx容器。
前面提及到,Atomic整合了Etcd和Kubernetes,它們分別是容器的調(diào)度系統(tǒng)和配置管理系統(tǒng)。啟動(dòng)Kubernetes后就是一個(gè)Container as a Service“私有云”,我們可以直接部署容器到集群上而不必考慮底層的硬件資源,啟動(dòng)服務(wù)命令如下。
注意我們現(xiàn)在把Master和Minion跑在同一臺(tái)服務(wù)器上,實(shí)際上kublet和kube-proxy也可以部署在多臺(tái)Minion上組成Kubernetes集群?;A(chǔ)服務(wù)正常起來后,通過命令可以檢查各個(gè)進(jìn)程當(dāng)前的狀態(tài)和日志。
```
service docker status
service etcd status
service kube-apiserver status
service kube-controller-manager status
service kube-scheduler status
service kubelet status
service kube-proxy status
jornalctl -f -l -xn -u etcd -u kube-apiserver -u kube-scheduler
```
Kubernetes是Google開源的容器調(diào)度系統(tǒng),吸收了Google使用容器的十多年經(jīng)驗(yàn),并對(duì)內(nèi)部系統(tǒng)Borg進(jìn)行改造開源出來,逐漸成為Docker生態(tài)中***秀的調(diào)度框架。Kubernetes將運(yùn)行在同一臺(tái)主機(jī)的容器組成Pod,并且使用Replication controller來管理一組Pod的備份數(shù),只要Pod運(yùn)行個(gè)數(shù)與預(yù)期值不同系統(tǒng)就會(huì)自動(dòng)地啟停容器,保證業(yè)務(wù)不受影響。
在集成環(huán)境Atomic中,我們很容易就可以啟動(dòng)Pod或Replication controller了。我們啟動(dòng)一個(gè)包含Nginx容器的Pod,并且暴露80端口。
Pod的定義文件開放在Github https://raw.githubusercontent.com/tobegit3hub/kubernetes_docker/master/nginx_pod.json
啟動(dòng)后我們也可以使用Kubernetes的客戶端來查看當(dāng)前的集群狀態(tài),并且測(cè)試Nginx容器是否正常運(yùn)行。注意***運(yùn)行Nginx需要從Docker官方倉(cāng)庫(kù)下載鏡像,等待時(shí)間稍長(zhǎng)一些,這時(shí)通過“journalctl -f -u kubelet”可以查看進(jìn)度。
Atomic也提供了啟動(dòng)Replication controller的文檔,即使主動(dòng)把Docker容器停止了,Kubernetes還是會(huì)自動(dòng)把容器起起來,保證服務(wù)正常。具體的操作歡迎大家在UOS平臺(tái)上嘗試。
Atomic精簡(jiǎn)了系統(tǒng)與容器無關(guān)的組件,并且預(yù)裝了Docker、Kubernetes等工具方便使用。除此之外,Atomic使用了Rpm-ostree的包管理系統(tǒng),好處就是讓系統(tǒng)回滾變得更簡(jiǎn)單了,通過Ostree來創(chuàng)建一個(gè)二進(jìn)制的Repo,Ostree的詳細(xì)教程可以在官網(wǎng)中找到。
而且Atomic使用了和CoreOS一樣的Systemd作為Init系統(tǒng),讓服務(wù)管理更加直觀和容易了,前面已經(jīng)使用過Systemd來啟動(dòng)服務(wù)了,更詳細(xì)的systemd教程在官網(wǎng)也可以找到。
容器技術(shù)在近年發(fā)展迅猛,針對(duì)容器設(shè)計(jì)的操作系統(tǒng)競(jìng)爭(zhēng)也越來越激烈,Red Hat推出的Atomic也符合這個(gè)潮流。總體而言Atomic使用了比較成熟的操作系統(tǒng)與容器技術(shù),并沒有顛覆傳統(tǒng)開發(fā)者的使用習(xí)慣,并且提供了更易用的容器運(yùn)行環(huán)境。
近年來各大廠商都推出了基于容器的下一代IT架構(gòu),UnitedStack也積極關(guān)注容器的發(fā)展,到目前為止,UOS是***家也是唯一一家對(duì)兩大容器操作系統(tǒng)CoreOS和Atomic都支持的IaaS廠商。我們建立了一個(gè)容器服務(wù)交流QQ群(群號(hào):462294386),方便大家交流。
關(guān)于作者:
陳迪豪,UnitedStack有云的基礎(chǔ)架構(gòu)工程師,目前專注于Docker、OpenStack社區(qū)。Docker監(jiān)控管理工具Seagull項(xiàng)目作者,開源電子書《理解Linux進(jìn)程》作者。