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