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
    ...
}
AI 代码解读
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
    ...
}
AI 代码解读

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

必嘫
+关注
目录
打赏
0
0
0
1
78493
分享
相关文章
基于SCA的软件无线电系统的概念与架构
软件通信体系架构(SCA)是基于软件定义无线电(SDR)思想构建的开放式、标准化和模块化平台,旨在通过软件实现通信功能的灵活配置。SCA起源于美军为解决“信息烟囱”问题而推出的联合战术无线电系统(JTRS),其核心目标是提升多军种联合作战通信能力。 上海介方信息公司的OpenSCA操作环境严格遵循SCA4.1/SRTF标准,支持高集成、嵌入式等场景,适用于军用通信、雷达等领域。 SCA体系包括目标平台资源层(TRL)、环境抽象层(EAL)、SRTF操作环境(OE)及应用层(AL)。其中,SRTF操作环境包含操作系统、运行时环境(RTE)和核心框架(CF),提供波形管理、资源调度等功能。
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
112 3
|
3月前
|
Spring底层架构核心概念解析
理解 Spring 框架的核心概念对于开发和维护 Spring 应用程序至关重要。IOC 和 AOP 是其两个关键特性,通过依赖注入和面向切面编程实现了高效的模块化和松耦合设计。Spring 容器管理着 Beans 的生命周期和配置,而核心模块为各种应用场景提供了丰富的功能支持。通过全面掌握这些核心概念,开发者可以更加高效地利用 Spring 框架开发企业级应用。
120 18
网络安全中的零信任架构:从概念到部署
网络安全中的零信任架构:从概念到部署
大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等
大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等
126 5
大数据-53 Kafka 基本架构核心概念 Producer Consumer Broker Topic Partition Offset 基础概念了解
大数据-53 Kafka 基本架构核心概念 Producer Consumer Broker Topic Partition Offset 基础概念了解
139 4
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
113 0
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
100 0
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
91 0