白癜风可以治愈吗 http://m.39.net/pf/a_4793212.html编者按:
CoreOS是一个基于Docker的轻量级容器化Linux发行版,专为大型数据中心而设计,旨在通过轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复杂度。CoreOS作为Docker生态圈中的重要一员,日益得到各大云服务商的重视,目前已经完成了A轮融资,发展风头正劲。InfoQ希望《CoreOS实战》系列文章能够帮助读者了解CoreOS以及相关的使用方法。如果说Docker是下一代的虚拟机,那CoreOS就应该是下一代的服务器Linux,InfoQ愿和您一起探索这个新生事物。
1.概述
随着Docker的走红,CoreOS作为一个基于Docker的轻量级容器化Linux发行版日益得到大家的重视,目前所有的主流云服务商都提供了对CoreOS的支持。CoreOS是新时代下的Linux发行版,它有哪些独特的魅力了?本篇作为《CoreOS实战》的第一部分,将向大家简要介绍CoreOS以及CoreOS相关的管理工具,试图向您揭开CoreOS背后神秘的面纱。
2.CoreOS之禅
云计算新星Docker正在以火箭般的速度发展,与它相关的生态圈也渐入佳境,CoreOS就是其中之一。CoreOS是一个全新的、面向数据中心设计的Linux操作系统,在年7月发布了首个稳定版本,目前已经完成了万美元的A轮融资。CoreOS专门针对大型数据中心而设计,旨在以轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复杂度。现在CoreOS已经推出了付费产品。通过付费,用户可以使用可视化工具管理自己的CoreOS集群。
与其他历史悠久、使用广泛的Linux操作系统相比,CoreOS拥有下面几个优点。
首先,CoreOS没有提供包管理工具,而是通过容器化(containerized)的运算环境向应用程序提供运算资源。应用程序之间共享系统内核和资源,但是彼此之间又互不可见。这样就意味着应用程序将不会再被直接安装到操作系统中,而是通过Docker运行在容器中。这种方式使得操作系统、应用程序及运行环境之间的耦合度大大降低。相对于传统的部署方式而言,在CoreOS集群中部署应用程序更加灵活便捷,应用程序运行环境之间的干扰更少,而且操作系统自身的维护也更加容易。
其次,CoreOS采用双系统分区(dualrootpartition)设计。两个分区分别被设置成主动模式和被动模式并在系统运行期间各司其职。主动分区负责系统运行,被动分区负责系统升级。一旦新版本的操作系统被发布,一个完整的系统文件将被下载至被动分区,并在系统下一次重启时从新版本分区启动,原来的被动分区将切换为主动分区,而之前的主动分区则被切换为被动分区,两个分区扮演的角色将相互对调。同时在系统运行期间系统分区被设置成只读状态,这样也确保了CoreOS的安全性。CoreOS的升级过程在默认条件下将自动完成,并且通过cgroup对升级过程中使用到的网络和磁盘资源进行限制,将系统升级所带来的影响降至最低。
另外,CoreOS使用Systemd取代SysV作为系统和服务的管理工具。与SysV相比,Systemd不但可以更好的追踪系统进程,而且也具备优秀的并行化处理能力,加之按需启动等特点,并结合Docker的快速启动能力,在CoreOS集群中大规模部署DockerContainers与使用其他操作系统相比在性能上的优势将更加明显。Systemd的另一个特点是引入了“target”的概念,每个target应用于一个特定的服务,并且可以通过继承一个已有的target扩展额外的功能,这样使得操作系统对系统上运行的服务拥有更好的控制力。
通过对系统结构的重新设计,CoreOS剔除了任何不必要的软件和服务。在一定程度上减轻了维护一个服务器集群的复杂度,帮助用户从繁琐的系统及软件维护工作中解脱出来。虽然CoreOS最初源自于GoogleChromeOS,但是从一开始就决定了CoreOS更加适合应用于一个集群环境而不是一个传统的服务器操作系统。
.CoreOS相关工具
除了操作系统之外,CoreOS团队和其他团队还提供了若干工具帮助用户管理CoreOS集群以及部署Dockercontainers。
.1.etcd
在CoreOS集群中处于骨架地位的是etcd。etcd是一个分布式key/value存储服务,CoreOS集群中的程序和服务可以通过etcd共享信息或做服务发现。etcd基于非常著名的raft一致性算法:通过选举形式在服务器之中选举Lead来同步数据,并以此确保集群之内信息始终一致和可用。etcd以默认的形式安装于每个CoreOS系统之中。在默认的配置下,etcd使用系统中的两个端口:和,其中提供给外部应用程序以HTTP+Json的形式读写数据,而则用作在每个etcd之间进行数据同步。用户更可以通过配置CACert让etcd以HTTPS的方式读写及同步数据,进一步确保数据信息的安全性。
.2.fleet
fleet是一个通过Systemd对CoreOS集群中进行控制和管理的工具。fleet与Systemd之间通过D-BusAPI进行交互,每个fleetagent之间通过etcd服务来注册和同步数据。fleet提供的功能非常丰富,包括查看集群中服务器的状态、启动或终止Dockercontainer、读取日志内容等。更为重要的是fleet可以确保集群中的服务一直处于可用状态。当出现某个通过fleet创建的服务在集群中不可用时,如由于某台主机因为硬件或网络故障从集群中脱离时,原本运行在这台服务器中的一系列服务将通过fleet被重新分配到其他可用服务器中。虽然当前fleet还处于非常早期的状态,但是其管理CoreOS集群的能力是非常有效的,并且仍然有很大的扩展空间,目前已提供简单的API接口供用户集成。
..Kubernetes
Kuberenetes是由Google开源的一个适用于集群的Dockercontainers管理工具。用户可以将一组containers以“POD”形式通过Kubernetes部署到集群之中。与fleet更加侧重CoreOS集群的管理不同,Kubernetes生来就是一个Containers的管理工具。Kubernetes以“POD”为单位管理一系列彼此联系的Containers,这些Containers被部署在同一台物理主机中、拥有同样地网络地址并共享存储配额。
.4.flannel(rudder)
flannel(rudder)是CoreOS团队针对Kubernetes设计的一个覆盖网络(overlaynetwork)工具,其目的在于帮助每一个使用Kuberentes的CoreOS主机拥有一个完整的子网。Kubernetes会为每一个POD分配一个独立的IP地址,这样便于同一个POD中的Containers彼此连接,而之前的CoreOS并不具备这种能力。为了解决这一问题,flannel通过在集群中创建一个覆盖网格网络(overlaymeshnetwork)为主机设定一个子网。
4.内容预告
在下一篇中,笔者将为大家展示如何建立一个CoreOS集群并通过Kubernetes管理其中的DockerContainers。如果您也是Docker技术的爱好者或学习研究者,欢迎加入InfoQDocker技术交流群,。
预览时标签不可点收录于合集#个上一篇下一篇