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来维护该状态.该状态包括以下信息(但不限于): 应该运 ...
随机推荐
- Java基础——6种常用类讲解
本文主要介绍几种Java中常用类的应用. 一.System类 从API当中我们可以看出,public final class System exends Object.System类包含一些有用的字段 ...
- 使用JDBC一次执行多条语句(以MySQL为例)
阅读本文需要的先修知识: 最基本的SQL语句 最基本的JDBC操作(如插入单条记录) 如急需使用请直接看最后一段代码. 在JDBC中,对记录进行修改操作最简单的方法是使用executeUpdate() ...
- Android - fragment Manager
fragment基本使用: http://www.cnblogs.com/qlky/p/5415679.html Fragmeng优点 Fragment可以使你能够将activity分离成多个可重用的 ...
- Android-加载图片避免OOM
http://blog.csdn.net/guolin_blog/article/details/9316683 高效加载大图片 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有 ...
- RxJava1升级到RxJava2的注意事项
1.package更改 rx1包名由原来的rx.xxx更改为io.reactivex.xxx,并且在同一个module之下,rx1和rx2是不兼容的. 2.背压支持 RxJava在1.0只有一个个观察 ...
- jquery插件-fullpage.js
1⃣️ 简介 fullPage.js 是一个基于 jQuery 的插件,它能够很方便.很轻松的制作出全屏网站,主要功能有: 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 ...
- JSP内置对象——response对象
看一个实例: 运行结果: 出现了一个很奇怪的现象,这个outer对象输出的字符串,跑到顶部去了.这个呢也就说明了response对象获得的writer对象的输出总是前于我们的内置对象.(respons ...
- JS截取字符串方法实例
// JS截取字符串可使用 substring()或者slice() // // 函数:substring() // 定义:substring(start,end)表示从start到end之间的字符串 ...
- 我正在参加 CSDN 2018 年博客之星评选,希望大家能支持我
我正在参加 CSDN 2018 年博客之星评选,希望大家能支持我 我是[No. 001]号,感谢大家宝贵的一票 ^_^/ 投票地址:https://bss.csdn.net/m/topic/blog_ ...
- maven学习笔记--maven项目创建
使用Maven命令和Eclipse的Maven插件,创建Maven项目 (1)maven命令生成项目 新建一个文件目录,dos进入该目录并执行下面命令: mvn archetype:c ...