SwarmKit的概念和架构

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: SwarmKit是容器集群调度领域新的挑战者,虽然不够成熟,但由于设计理念优秀,并被直接集成在Docker Engine中,大有后发而先至的可能性。对于docker的从业者来说,了解和学习Swamkit是非常必要的,我们会在这里介绍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的部署和状态追踪。

manager
除此之外,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内容及状态的持久化,

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

swarmkit_arch
Notice 该图中的GPRC应该为GRPC

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

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

目录
相关文章
|
1月前
|
消息中间件 存储 缓存
Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
【2月更文挑战第20天】Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
78 2
|
2月前
|
SQL 分布式计算 Hadoop
Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
【2月更文挑战第6天】Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
77 0
|
3月前
|
领域建模
架构设计 DDD领域建模 核心概念
【1月更文挑战第6天】架构设计 DDD领域建模 核心概念
|
1月前
|
消息中间件 存储 SQL
Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
【2月更文挑战第18天】Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
447 0
|
3月前
|
消息中间件 负载均衡 监控
微服务架构:从概念到实践
微服务架构是一种面向服务的架构风格,旨在将复杂的应用程序拆分成更小、更可管理的部分。本文将介绍微服务架构的概念和原则,并提供一些实践经验和最佳实践。
|
3月前
|
负载均衡 持续交付 微服务
微服务架构的概念与实践
随着互联网应用的快速发展,传统的单体式架构已经无法满足业务需求。微服务架构作为一种全新的解决方案,正在逐渐流行起来。本文将介绍微服务架构的基本概念、特点以及实践技巧,帮助读者更好地理解和应用这一架构模式。
|
3月前
|
运维 监控 持续交付
微服务架构的概念、特点、优缺点以及最佳实践
微服务架构的概念、特点、优缺点以及最佳实践
399 1
|
3月前
|
前端开发 UED
微前端架构的崛起:概念与实践
微前端架构是一种新兴的前端架构模式,与传统的单体式前端架构有所不同。本文将介绍微前端架构的基本概念和具体实践,讨论其优势和劣势,以及如何在项目中应用微前端架构。
33 0
|
3月前
|
安全 物联网 数据安全/隐私保护
智能终端信息安全概念(八):硬件安全技术—芯片自主化与安全硬件架构
智能终端信息安全概念(八):硬件安全技术—芯片自主化与安全硬件架构
35 0
|
3月前
|
消息中间件 Kafka
Kafka - 深入了解Kafka基础架构:Kafka的基本概念
Kafka - 深入了解Kafka基础架构:Kafka的基本概念
26 0