SwarmKit的概念和架构

概述



SwarmKit是一个分布式集群调度平台,作为docker一个新的集群调度开源项目,它借鉴了许多k8s和mesos的优秀理念,也被docker公司寄予了厚望,内嵌到了docker daemon中。实际上它可以被看做Docker Swarm的2.0版本。

现在我们就来理解一下SwarmKit的基本概念模型和架构简介:

概念模型

Service(服务)

一个Service包含完成同一项工作的一组Task,它分为

Global(全局服务模式), 需要每个node上部署一个task实例,有点像kubernetes中的daemon set,用来部署类似gluster等分布式存储和fluented日志搜集模块这种类型的基础服务

Replicated(重复服务模式), 需要按照最终用户指定的数量尽可能在不同的节点上部署task的实例

Task(任务)

作为SwarmKit中的基本调度单元, Task承担了创建docker容器,并且运行指定命令的责任(docker run)。Task一旦被分配到目标机器,它就是不可修改的(immutable),它的结果只能是running或者failed。而且上在未来,Task的工作可以更灵活和插件化。

架构综述

Cluster(集群)

一个 cluster 由一组统一配置的的装有docker引擎的节点连接起来完成计算工作

Node(节点)

Node 是集群的基本组成单元,其身份分为Manager和Worker

Manager(管理器)

Manager 负责接收用户创建的 Service, 并且根据 service的定义创建一组task,根据task所需分配计算资源和选择运行节点,并且将task调度到指定的节点。而manager含有以下子模块:

type Manager struct {
    ...
    Dispatcher             *dispatcher.Dispatcher
    replicatedOrchestrator *orchestrator.ReplicatedOrchestrator
    globalOrchestrator     *orchestrator.GlobalOrchestrator
    taskReaper             *orchestrator.TaskReaper
    scheduler              *scheduler.Scheduler
    allocator              *allocator.Allocator
    ...
}
Orchestrator(编排器)

Orchestrator负责确保每个service中的task按照service定义正确的运行

Allocator(资源分配器)

Allocator主要负责分配资源,而这种资源通常为全局的,比如overlay网络的ip地址和分布式存储,目前只是实现是vip地址分配。未来一些自定义资源也可以通过Allocator来分配。

Scheduler(调度器)

Scheduler负责将Service中定义的task调度到可用的Node上

Dispatcher(分发器)

Dispatcher直接处理与所有agent的连接, 这里包含agent的注册,session的管理以及每个task的部署和状态追踪。


除此之外,SwarmKit基于Raft算法在内存中维护集群的状态一致性,在一组Manager选出一个Leader。只有Leader处理所有的请求,其它的Manager只是把请求传给leader,起到了反向代理的作用。

Agent

Agent 负责管理Node,部署Task以及追踪Task的状态,并且将Task的状态汇报给Manager。Agent包含以下子模块:

type Agent struct {
    ...
    node *api.Node
    worker   Worker
    ...
}

api.Node(节点状态)

api.Node 负责向Manager定期汇报所在节点实际状态. 当一个节点的这实际状态和期望状态不一致时,Manager会自动将服务中的任务调度到其他节点,以保证服务的正常运行。

Worker(任务处理器)

Worker 处理以下工作:

  • 部署和启动Task
  • Task状态追踪和汇报
  • 对于部署在本机上的task内容及状态的持久化,


SwarmKit提供了两个可执行程序:swarmd和swarmctl。swarmd部署在cluster中的每一个node上,彼此间互相通信,组成cluster;而swarmctl则用来控制整个集群。 下图可以清楚地描述SwarmKit的内部机制(该图出自于https://pbs.twimg.com/media/Ckb8EMLVAAQrxYH.jpg)


Notice 该图中的GPRC应该为GRPC

阿里云容器服务完全兼容Docker原生的编排技术,目前支持Docker 1.11正式版本。它现在的容器化服务生命周期管理的方式和新的Swarm模式很接近。当Docker 1.12稳定版发布之后,我们会很快推出对SwarmKit的支持。

想了解更多容器服务内容,请访问 (https://www.aliyun.com/product/containerservice)

时间: 2024-09-04 22:01:53

SwarmKit的概念和架构的相关文章

物联网云的概念与架构

<智慧的云计算--物联网的平台(第2版)>第12章讲述的是云计算的延伸--物联网.本节为大家介绍物联网云的概念与架构. 物联网云是针对物联网应用的开发.测试.交付和运营所设计的云计算方案.除了具备动态交付.弹性扩展等云计算的基本特征外,物联网云还可以为物联网的各个层次提供帮助.物联网云可以为物联网应用提供海量的计算和存储资源,以及统一的数据存储格式和数据处理及分析手段,同时,物联网云还提供应用集成的接口,可以大大简化应用的交付过程,降低交付成本,建立一个由设备提供商.应用开发商.服务运营商和行

BaaS云架构核心模式之Serverless架构 - 用服务代替服务器(Martin Fowler)

Martin Fowler最近非常推崇的serverless架构模式,是BaaS云架构实现的核心架构模式. Martin Fowler在2016.6.17号发表了一篇博客: <Serverless Architectures>,引起业界广泛关注: 在这篇博客里,他介绍了serverless架构,以及FaaS,Microservice,Docker等流行的架构和概念,描述了Amazon AWS lambda的价值, 进一步将这种云时代的架构清晰的展现在大家的视野里. 本文很多内容来自这篇博客,让

【转载】理解本真的REST架构风格

      本文将带您领略REST架构的起源.与Web的关系.REST架构的本质及特性,以及REST架构与其他架构风格之间的比较. 引子       在移动互联网.云计算迅猛发展的今天,作为一名Web开发者,如果您还没听说过"REST"这个buzzword,显然已经落伍了.夸张点说,甚至"出了门都不好意思跟别人打招呼".尽管如此,对于REST这个泊来品的理解,大多数人(包括一些资深的架构师)仍然停留在"盲人摸象"的阶段.常常听到各种各样关于RES

三层架构(一)——什么是三层架构?

 一.什么是三层架构?   1.概念   三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦合"的思想.    分层(tier) 概念 表现层(UI) 通俗讲就是展现给用户的界面,用于显示数据和接受用户输入的数据:即用户在使用一个系统的时候他的所见所得. 业务逻辑层(BLL) 针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理.是表

探讨NuoDB数据库的架构:NuoDB是什么

介绍 传统的关系型数据库适用于垂直伸缩(scale-up)的架构.换句话说,为了处理更多的负载,你需要换个更强大的计算机.在几年前,这意味着要想支持水平伸缩(scale-out)的架构,大家就得放弃SQL,或者采用分区.Active-Passive复制等技巧.在灵活.富有逻辑的数据库上实现真正的ACID编程模型是不太可能的.正是这种局势引发了NewSQL运动,NuoDB的出现也是为了解决这个问题. NuoDB是针对云伸缩设计的关系型数据库.怎么理解呢?NuoDB是一种真正的SQL服务:它拥有AC

理解本真的REST架构风格

本文是"深入探索REST"专栏系列深度内容中的第二篇,它将带您领略REST架构的起源.与Web的 关系.REST架构的本质及特性,以及REST架构与其他架构风格之间的比较. 引子 在 移动互联网.云计算迅猛发展的今天,作为一名Web开发者,如果您还没听说过"REST"这个 buzzword,显然已经落伍了.夸张点说,甚至"出了门都不好意思跟别人打招呼".尽管如此,对于 REST这个泊来品的理解,大多数人(包括一些资深的架构师)仍然停留在"

Windows 7与CUDA架构的兼容性测试

图形巨头NVIDIA推出的GPU通用计算技术CUDA相信大家都有所了解,然而随着Windows 7逐渐成为热门的关注对象,有一部分人对Windows 7是否支持CUDA.能否很好的支持CUDA产生了质疑.原因很直接--因为Windows 7支持微软自家的Direct compute! 但事实真的是这样吗?今天,笔者就再一次针对CUDA的概念.架构等进行剖析,并且分别在Windows Vista与Windows 7操作系统上对CUDA性能进行对比测试,以达到拨乱反正的效果. 在进行正式的对比评测之

NoSQL之Redis(四)--- RedisCluster概念以及搭建

之前已经在博文中介绍了redis以及redis的简单实用,但是在实际的项目中用单机版redis还是很少的基本上都是实用redis集群.            RedisCluster概念          RedisCluster架构          架构细节:          (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.          (2)节点的fail是通过集群中超过半数的节点检测失效时才生效.          (3)客户端

架构分解过程模型和多维度多层次分解模型

如果期望有一个权威统一的标准定义,那答案是没有,目前存在多种软件架构的定义,可以说百花齐放,百家争鸣.其中 http://www.aliyun.com/zixun/aggregation/14477.html">IEEE1471-2000 的定义是这样的:系统的架构是系统组件的基本组织形式,它们之间的关系以及和环境之间的关系,以及指导其设计和演化的原则.该定义中的系统组件可以理解为架构元素,根据涉及到的系统范围和层次,架构元素可以是子系统.模块.类等等.从架构设计的动态角度出发,我们可以这