Docker容器:资源管理调度和应用编排
三种容器集群资源管理调度和应用编排技术
Mesos生态
核心组件包括Mesos容器集群资源管理调度以及不同的应用管理框架;典型的应用管理框架包括Marathon和Chronos;
Mesos生态主要由Mesosphere、Twitter等公司主力推动;
Kubernetes生态
由谷歌公司发起的开源项目;
Docker生态
Docker公司希望向容器生态系统上层发展,推出了Swarm容器资源管理调度组件,以及Compose应用编排组件;
Mesos生态
Mesos通过对数据中心资源的统一管理和分配,把整个数据中心抽象为一台大的计算机,使开发者不用关心资源的管理,只聚焦应用的开发;
同时,其打破了数据中心不同应用彼此独立的资源烟囱,提升了资源利用率;
Mesos两阶段资源分配
Mesos控制节点负责根据不同资源分配策略和算法,通过Resource Offer给已经注册的不同应用框架分配资源,完成第一阶段资源分配;
应用框架的调度器负责第二阶段资源调度:把本框架的不同任务调度到不同的Resource Offer上;
Mesos的两阶段资源调度实现了集群调度规模的可扩展性,以及应用框架资源调度策略和算法的灵活性;
Marathon容器应用管理平台
Marathon是MesosSphere公司开发的一个容器应用管理平台,面向Long-Running应用的部署和管理;
Marathon容器应用管理平台的核心能力包括:
1.架构HA:Marathon通过Zookeeper支持Active-Passive集群部署,保证高可用;
2.支持不同类型的容器运行时(runtime):包括Mesos容器和Docker容器;
3.支持有状态应用;
4.调度器
5.健康检查
6.事件订阅
7.监控
8.灰度升级
9.负载均衡和服务发现
Kubernetes
Google公司在2014年6月宣布开源的容器资源管理和应用编排引擎;
见Kubernetes相关内容
Docker生态
资源调度:Swarm
Docker公司发布三剑客中的一员,用来提供容器集群服务, 目的是更好的帮助用户管理多个Docker Engine,方便用户使用,像使用DockerEngine一样使用容器集群服务;
特点:
1.对外以Docker API接口呈现;
2.Swarm本身专注于Docker集群管理,非常轻量,占用资源也非常少;
3.插件化机制,Swarm中的各个模块都抽象出了API,可以根据定制实现需求;
4.与Docker发布同步;
架构
1.API
2.Scheduler
3.Cluster API
4.LeaderShip模块
5.Discovery Service服务发现模块
6.Swarm Agent
Swarm集群管理
swarm create创建一个集群ID;
swarm join将节点加入到集群;
swarm manage启动;
Swarm容器调度
用户容器创建时,会经过调度模块选择一个最优节点;
1.过滤
2.策略
Swarm服务发现
在Swarm中,服务发现主要用于节点发现,每一个节点上的Agent会将Docker Engine的IP端口注册到服务发现系统中; Manager会从服务发现模块中读取节点信息;
应用编排:Compose
Docker Compose的前身是Fig项目,Fig是Orchard的一个产品; 采用Python编写,提通过Apache2.0协议开源,Compose在2014年被Docker公司收购并成为官方支持的解决方案;
Docker编排服务的三驾马车:
1.Machine:安装部署Docker;
2.Swarm:容器集群管理;
3.Compose:容器应用的编排组织;
Compose是支持定义由多个容器组成的应用并运行启动的工具; 应用所涉及的容器规格以及容器之间网络、存储的配置由Compose规范进行描述,以YAML文件编写; 通过简单的命令行,用户可以创建并启动由该YAML描述的应用;
refs
《云计算架构–技术与实践》顾炯炯