Docker的3大编排工具:Mesos、Kubernetes、Swarm
容器落地时,Docker平台的核心在于编排工具的选择。
1.Mesos介绍
两个重要角色,一个是Slave,安装集群节点上。
一个是Master,作为集群的管理节点,slave会将节点的资源使用情况周期性的报告给我们的master节点。
Mesos配合计算架构的FrameWork进行资源调度,过程如下:
- master会将计算机节点的资源使用情况周期性的报告给我们的Framework Scheduler
- Framework Scheduler进行调配后,下发部署的任务给集群节点
- 节点上的framework Executor获取任务进行容器的部署(在容器的架构中,Executor就是容器的引擎)
- 节点会将部署结果反馈给master
- Master会更新主机资源的状态给Framework Scheduler
Mesos+Marathon+Zookeeper
Marathon是一个可以调用Docker引擎的framework,可以将容器按照一定的调度策略部署到合适的主机上。
Zookeeper的作用是保证Marathon和 Mesos来管理节点的高可用性,即当master节点宕机之后,可以快速的选取出新的master节点,从而不影响逻辑架构。Zookeeper本身是一个分布式的高可用的架构。
2.kubernetes的介绍(Goolge的开源容器管理项目)
【重点】:Mesos中的最小的单元是容器,但是kubernetes的最小的单元是Pod。容器被封装在Pod中,一个Pod中可以存放一个或者多个容器。
设计Pod的目的是:将需要紧密联系的Docker容器放置在一个独立的空间内(Pod)。
kubernetes整体架构:在部署 kubernetes(?)之前,需要先部署Etcd作为集群的管理工具
-
2个重要的角色:minion(普通节点)和master(管理节点)。
minion节点上的kubelet会结合etcd和cAdvisor将节点信息汇总到Master中。
Master使用Schedule会按照一定的调度策略将Pod调度到各个minion上,使用Replication Controller来控制Pod的数量和伸缩,使用Service来分配Pod的IP和处理Pod的负载均衡。
Master提供了统一的访问接入口,可以通过web(?)或者commands对kubernetes进行管理。
通过kubernetes的统一管理实现了六个功能
3.Swarm的介绍(Docker公司自己的容器管理工具)
1.12版本之后,Swarm已经封装进Docker引擎中,并且自带服务发现的功能
-
2个重要角色:manager和worker node
Swarm1.12之后,自带服务发现的功能,可以做到manager node的高可用性。
Swam也内置了负载均衡的技术,使用的是LVS,功能强大,但是依然支持和其他服务发现的工具,如etcd等等。