2015年6月18日,UnitedStack有云上线Atomic镜像,开发者可以在UOS公有云平台上体验***的Fedora Cloud Atomic容器操作系统。
这是继上线CoreOS镜像之后,UnitedStack有云对容器技术的又一有力支撑,也成为国内目前唯一一个同时提供这两个镜像的IaaS厂商。
Atomic是Red Hat公司发起的以应用为中心的操作系统,它可以更方便地部署和管理你的Docker容器。Atomic基于成熟的底层操作系统,保证容器运行环境的安全,并且集成了Kubernetes、Systemd等管理工具,提供容器应用部署的全套解决方案。对于Atomic采用的Kubernetes调度系统,我们也将在近期推出Kubernetes系列教程,欢迎大家关注。
与传统操作系统不同,Atomic经过裁剪后体积更小更容易维护,并且集成了SELinux安全技术,让Docker容器有更好的安全隔离,还有Gockpit等工具让容器的部署和管理更加方便。
项目官网 http://www.projectatomic.io
CoreOS是基于Chrome OS定制的Linux发行版,而Atomic是基于更成熟的RHEL和Fedora。CoreOS使用了自己研发的Fleet来管理容器生命周期,Atomic则集成了Google开源的Kubernetes调度系统,同时提供了Geard工具来部署多个容器。Atomic也可以集成SELinux,提供更安全、专门为容器设计的运行环境,开发者迁移到新的系统架构也更加容易。
两个操作系统目前都依赖Etcd做配置管理,提供容器部署和调度服务,而且现在只支持***的Docker容器。
在UOS上启动Atomic系统非常简单,在“创建云主机” 中选择***的“Fedora Cloud Atomic 22 64bit”镜像,分配CPU和内存后即可使用。
为了连接外网,你可以在“公网IP”页面创建公网IP。
然后在“云主机”页面绑定刚申请的公网IP。
绑定后IP后,UOS提供了VNC终端,在浏览器就可以操纵你的Atomic操作系统了。
启动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
```
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厂商。我们建立了一个容器服务交流QQ群(群号:462294386),方便大家交流。
关于作者:
陈迪豪,UnitedStack有云的基础架构工程师,目前专注于Docker、OpenStack社区。Docker监控管理工具Seagull项目作者,开源电子书《理解Linux进程》作者。