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

目录
相关文章
|
5月前
|
监控 负载均衡 测试技术
服务网格简介:探索现代微服务架构中的服务网格概念和价值
服务网格简介:探索现代微服务架构中的服务网格概念和价值
74 0
|
6月前
|
监控 数据管理 API
深入了解微服务架构:从概念到实践
微服务架构是近年来在软件开发领域崭露头角的一种架构范式。它的灵活性和可伸缩性使其成为许多大型企业和创业公司的首选。本文将深入介绍微服务架构的概念、优势、挑战以及实际应用。
|
3月前
|
存储 分布式计算 Hadoop
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
58 0
|
2天前
|
SQL 分布式计算 Hadoop
Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
【2月更文挑战第6天】Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
13 0
|
2月前
|
消息中间件 负载均衡 监控
微服务架构:从概念到实践
微服务架构是一种面向服务的架构风格,旨在将复杂的应用程序拆分成更小、更可管理的部分。本文将介绍微服务架构的概念和原则,并提供一些实践经验和最佳实践。
|
2月前
|
负载均衡 持续交付 微服务
微服务架构的概念与实践
随着互联网应用的快速发展,传统的单体式架构已经无法满足业务需求。微服务架构作为一种全新的解决方案,正在逐渐流行起来。本文将介绍微服务架构的基本概念、特点以及实践技巧,帮助读者更好地理解和应用这一架构模式。
|
2月前
|
运维 监控 持续交付
微服务架构的概念、特点、优缺点以及最佳实践
微服务架构的概念、特点、优缺点以及最佳实践
51 1
|
2月前
|
安全 物联网 数据安全/隐私保护
智能终端信息安全概念(八):硬件安全技术—芯片自主化与安全硬件架构
智能终端信息安全概念(八):硬件安全技术—芯片自主化与安全硬件架构
24 0
|
3月前
|
分布式计算 算法 中间件
终于有架构大牛把分布式系统概念讲明白了,竟然用了足足800页
10年来,随着网络技术的发展、计算机应用的深入、分布式系统构建技术的日益成熟,分布式系统逐渐深入到人们的日常活动,并渗透到社会、经济、文化生活的各个方面。现今,分布式系统作为主流的软件系统,已成为人们工作、学习和生活中不可或缺的一部分。
|
6月前
|
消息中间件 存储 监控
RocketMQ 的基本概念、架构设计、特点以及适用场景
RocketMQ 的基本概念、架构设计、特点以及适用场景
223 0
RocketMQ 的基本概念、架构设计、特点以及适用场景

相关产品

  • 容器镜像服务
  • 容器服务Kubernetes版