docker swarm英文文档学习-2-关键概念
参考https://docs.docker.com/engine/swarm/key-concepts/
Swarm mode key concepts集群模式关键概念
本主题介绍Docker Engine 1.12集群管理和编配特性特有的一些概念。
What is a swarm?
Docker引擎中嵌入的集群管理和编配功能是使用swarmkit构建的。Swarmkit是一个独立的项目,它实现了Docker的编配层,并直接在Docker中使用。
集群由多台以集群模式运行的Docker主机组成,它们分别充当管理员managers(管理成员和委托)和工作者workers(运行群服务services)。给定的Docker主机可以是经理manager、工人worker,也可以同时扮演这两个角色。创建服务service时,需要定义其最佳状态(副本数量、可用的网络和存储资源、服务对外公开的端口,等等)。Docker的工作是维护所需的状态。例如,如果一个工作节点变得不可用,Docker将在其他节点上调度该节点的任务。任务task是一个运行的容器container,它是集群服务service的一部分,由集群管理器manager管理,而不是一个独立的容器。
集群服务相对于独立容器的一个关键优势是,你可以修改服务的配置,包括它所连接的网络和卷,而不需要手动重新启动服务。Docker将更新配置,使用过期配置停止服务任务,并创建与所需配置匹配的新任务。
当Docker以集群模式运行时,你仍然可以在参与集群的任何Docker主机以及集群服务上运行独立容器。独立容器和集群服务之间的一个关键区别是,只有群管理器才能管理群,而独立容器可以在任何守护进程上启动。Docker守护进程可以作为管理人员、工人或两者兼而有之地参与到集群中。
就像你可以使用 Docker Compose来定义和运行容器一样,你也可以定义和运行集群服务栈(swarm service stacks)。
请继续阅读有关Docker集群服务的概念的详细信息,包括节点 nodes、服务services、任务tasks和负载平衡load balancing。
Nodes节点
节点是参与集群的Docker引擎的实例。你也可以将其视为Docker节点。你可以在一台物理计算机或云服务器上运行一个或多个节点,但是生产集群部署通常包括分布在多个物理和云机器上的Docker节点。
要将应用程序部署到集群中,需要向manager节点提交服务定义。管理器manager节点将称为任务task的工作单元分派给工作节点node。
Manager节点还执行维护集群所需状态所需的编配和集群管理功能。Manager节点选择一个leader来执行编排任务。
工作节点接收并执行从管理节点分派的任务。默认情况下,管理器节点也作为工作节点运行服务,但是你可以将它们配置为只运行管理器任务且仅作为管理器节点。代理在每个工作节点上运行,并报告分配给它的任务。工作节点将其分配的任务的当前状态通知管理节点,以便管理器能够维护每个工作人员所需的状态。
Services and tasks 服务和任务
服务service是要在管理器或工作节点上执行的任务的定义。它是集群体系的中心结构,是用户与集群交互的主要根源。
在创建服务时,要指定要使用哪个容器镜像,以及在运行的容器中执行哪些命令。
在副本服务模型中,集群管理器manager根据你在所需状态下设置的规模在节点之间分发特定数量的副本任务。
对于全局服务,swarm在集群中的每个可用节点上为服务运行一个任务task。
任务task携带Docker容器和在容器中运行的命令。它是集群的原子调度单元。管理节点根据服务级别中设置的副本数量将任务task分配给工作节点。一旦将任务分配给一个节点,它就不能移动到另一个节点。它只能在指定的节点上运行或失败。
Load balancing负载均衡
swarm管理器使用入口负载平衡公开你希望向集群外部提供的服务。集群管理器manager可以自动为服务service分配一个发布端口,也可以为服务配置一个发布端口。你可以指定任何未使用的端口。如果你没有指定端口,群管理器将为服务分配一个端口,范围为30000-32767。
外部组件(如云负载平衡器)可以访问集群中任何节点的PublishedPort上的服务,无论该节点当前是否运行该服务的任务。集群中的所有节点都将连接路由到正在运行的任务实例。
swarm模式有一个内部DNS组件,它自动为集群中的每个服务分配一个DNS条目。集群管理器使用内部负载平衡,根据服务的DNS名称在集群中的服务之间分发请求。
docker swarm英文文档学习-2-关键概念的更多相关文章
- docker swarm英文文档学习-3-开始
https://docs.docker.com/engine/swarm/swarm-tutorial/ 1)Getting started with swarm mode 本教程向你介绍Docker ...
- docker swarm英文文档学习-5-在swarm模式中运行Docker引擎
Run Docker Engine in swarm mode在swarm模式中运行Docker引擎 当你第一次安装并开始使用Docker引擎时,默认情况下禁用swarm模式.在启用集群模式时,需要处 ...
- docker swarm英文文档学习-11-上锁你的集群来保护你的加密密钥
Lock your swarm to protect its encryption key上锁你的集群来保护你的加密密钥 在Docker 1.13及更高版本中,默认情况下,群管理器使用的Raft日志在 ...
- docker swarm英文文档学习-12-在集群模式中的Raft共识
Raft consensus in swarm mode 在集群模式中的Raft共识 当Docker引擎在集群模式下运行时,manager节点实现Raft 共识算法来管理全局集群状态.Docker s ...
- docker swarm英文文档学习-10-使用Docker密钥管理敏感数据
Manage sensitive data with Docker secrets使用Docker secrets管理敏感数据 About secrets 对于Docker Swarm服务来说,sec ...
- docker swarm英文文档学习-6-添加节点到集群
Join nodes to a swarm添加节点到集群 当你第一次创建集群时,你将单个Docker引擎置于集群模式中.为了充分利用群体模式,可以在集群中添加节点: 添加工作节点可以增加容量.当你将服 ...
- docker swarm英文文档学习-7-在集群中管理节点
Manage nodes in a swarm在集群中管理节点 List nodes列举节点 为了查看集群中的节点列表,可以在管理节点中运行docker node ls: $ docker node ...
- docker swarm英文文档学习-4-swarm模式如何运行
1)How nodes work Docker引擎1.12引入了集群模式,使你能够创建一个由一个或多个Docker引擎组成的集群,称为集群.集群由一个或多个节点组成:在群模式下运行Docker引擎1. ...
- docker swarm英文文档学习-8-在集群中部署服务
Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运 ...
随机推荐
- [日常] Go语言圣经--接口约定习题
Go语言圣经-接口1.接口类型是对其它类型行为的抽象和概括2.Go语言中接口类型的独特之处在于它是满足隐式实现的3.Go语言中还存在着另外一种类型:接口类型.接口类型是一种抽象的类型4.一个类型可以自 ...
- c3p0 配置文件的设置。解决编码乱码问题等
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <named-confi ...
- chomd文件权限授予
drwxr -x r- x 什么意思| | | | | | | | | | 12345678910 第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道第2-4位表示这个文件的属主拥 ...
- Boring Sum(hdu4961)hash
Boring Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total S ...
- centos下MySQL Workbench连接时崩溃的解决方法
在centos6.5中使用MySQL Workbench 6.3.8链接数据库崩溃,如果是在终端使用命令“mysql-workbench”打开的话会有如下错误提示: /usr/libexec/mysq ...
- 类(class)相关概念小结
参考在线文档,整理php中类的相关概念如下 $this 在类的内部可以使用伪变量$this,这个伪变量为一个到主叫对象(经个人测试理解这应该是在运行时的真实对象,不是类,运行时绑定)的引用,所以一 ...
- POJ1611(KB2-B)
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 39211 Accepted: 18981 De ...
- PHP获取本周的每一天的时间
1.PHP获取未来一周的时间 public function getWeek() { for($i=0;$i<7;$i++) { $arr[$i]=date('Y-m-d',strtotime( ...
- 2016计蒜之道复赛 百度地图的实时路况(Floyd 分治)
题意 题目链接 Sol 首先一个结论:floyd算法的正确性与最外层\(k\)的顺序无关(只要保证是排列即可) 我大概想到一种证明方式就是把最短路树上的链拿出来,不论怎样枚举都会合并其中的两段,所以正 ...
- python中的赋值与深浅拷贝的区别
import copy lt = [1, 2, [3, 4]] # 赋值会增加一个引用,访问的都是同一数据 # lt2 = lt # 浅拷贝:只拷贝对象本身,里面的元素只会增加一个引用 lt2 = l ...