温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Docker swarm mode有什么用

发布时间:2021-12-13 16:37:15 来源:亿速云 阅读:186 作者:iii 栏目:云计算

这篇文章主要讲解了“Docker swarm mode有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Docker swarm mode有什么用”吧!

    Docker从1.12引入了swarm模式,swarm mode用来管理集群化的docker engines,被称作swarm。可以使用docker CLI来创建swarm,给swarm上部署应用,管理swarm的行为等等。。你可以创建一个集群包含一个或者多个docker engines,这个被叫做swarm mode。一个swarm包含了多个node,node可以是物理机、虚拟机等等。node包含了两个角色:managers、workers

manager node:

  1. 维护集群状态

  2. 调度服务

  3. 服务swarm模式下的HTTP API

    manager之间采用raft协议通讯,所以可以通过部署多台managers建立manager的高可用,但是manager必须是奇数个

worker node:

  1.  work nodes就是docker engine实例,唯一的用途就是执行容器。你可以创建一个只有一个manager的swarm,但是不能创建一个只有一个node,确没有manager的swarm集群。

在部署一个app容器镜像到docker的swarm模式的时候,一般是创建一个service。当你创建一个service的时候,你要指定那个镜像会被使用,并且要在镜像里面执行上面命令,你也可以指定这个服务的一些其他选项:

  1. 在swarm模式下,这个service对外暴露的端口

  2. 一个overlay网络用来连接到swarm下的其他service

  3. cpu和mem的使用配额限制

  4. 一个滚动升级策略

  5. 这个镜像在运行时的副本个数

有两种类型的service部署模式:replicated和global

  1. 在replicated service模式下,你可以指定该service你想有多少个task在运行,比如,你可以指定一个http服务有三个replicas,每个都提供相同的内容

  2. 在global service模式下,该service在每一个node上运行一个task,这里不需要预先设定task的数量,任何时候只要你在集群里面加入新的node,调度系统都会在该新node上自动部署该服务,这种场景适合在机器上部署监控客户端等等。

docker允许你创建service,service可以运行tasks,一个service是一个描述的最终状态,task是工作的work,work通过swarm来调度到node节点上,服务创建使用的是下面的流程:

  1. 使用docker service create创建服务

  2. 请求到达Docker manager节点上

  3. Docker manager节点调度该请求运行到一个workers node上

  4. 每个service可以启动多个tasks实例

  5. 每个tasks实例都有自己的生命周期

一个task会一直运行到它的任务完成,如果一个task停止了,该task是不会再次运行的。task会通过一系列状态最终完成或者失败,task一般有以下状态:

  • NEW    初始化task

  • PENDING    阻塞状态

  • ASSIGNED    分配到node状态

  • ACCEPTED    被node接收状态

  • PREPARING    准备状态

  • STARTING    启动状态

  • RUNNING    运行状态

  • COMPLETE    正常运行完毕状态

  • FAILED    运行失败状态

  • SHUTDOWN    docker关闭该task状态

  • REJECTED    work node拒绝该task状态

  • ORPHANED    node节点宕机太长状态

  • REMOVE

当你第一次安装并启动docker engine时,swarm模式是默认被禁止的。当swarm模式打开后,你可以通过swarm service来管理services,有两种方式可以运行在swarm模式:

  • 创建一个新的swarm

  • 加入现有的swarm

docker engine创建swarm的流程:

  1. 交换当前node到swarm模式

  2. 创建一个名为default的swarm

  3. 指定当前node为当前swarm的leader manager

  4. 命名该node的名称为该主机名

  5. 配置manager监听在本机的2377端口

  6. 设置当前node为active状态,这意味这该node可以接收集群调度来的tasks

  7. 启动一个内部的分布式数据存储系统

  8. 默认生成一个自签名的CA证书

  9. 生成一个tokens,为后面的worker和manager加入到该swarm

  10. 创建一个名为ingress的overlay网络,对外暴露swarm上的服务

    manager node使用advertise地址来接受其他node访问Swarmkit API and overlay networking的请求,其他在swarm集群中的node,必须可以访问manager的advertise地址 ,如果你不指定advertise地址,docker会自动检查系统是否有一个单ip地址,如果有,则监听在该地址的2377端口。如果该系统有多个ip地址,你必须通过--advertise-addr来指定一个地址。

    新的node需要一个token才能加入现有swarm集群,worker node使用的token不同于manager node使用的token,node只有使用join-token才能加入swarm,当Rotating join token的时候,是不会影响已经加入swarm集群的node的,rotation token可以确保老的token不能被所有的新node使用来加入swarm集群。

下面是swarm的一些关键点:

  1. 一个swarm包含了多个运行在swarm mode下的docker host,分别由manager和workers组成。manager来管理成员和授权,worker来运行swarm service。一个docker host可以是一个manager,也可以是一个worker,或者即是manager也是worker。还有一个大的优势是,如果swarm service中的容器是standalone模式的,你可以在修改service的配置后(networks、volumes) 不用重启service。docker会自动处理这些。

  2. 当一个docker host运行在swarm模式,你照样可以运行standalone模式的容器,但是swarm只能管理swarm service。

  3. node 一个docer engine就是一个node,当你需要部署应用到swarm的时候,需要在manager node上提交部署作业,manager node会派遣task到worker node上。manager node也有编排功能。worker nodes接收并执行task。

  4. service 一个service是定义好的在worker node上执行的task,swarm系统是一个中心结构的系统,当你定义好一个service的时候,你需要制定使用的镜像以及在镜像里面执行的命令。 在replicated services模式下,swarm manager分配定义好的replica task的副本数量的task在worker node上 在global services模式下,swarm service只运行一个task在worker node上

  5. tasks 一个task包括一个docker容器和在容器里面运行的命令。task会被swarm自动调度。manager分配task到worker上。一旦task被分配到一个node上,该task就不能移动到其他node上了,除非该node fail。

  6. Load balancing swarm使用 ingress load balancing,swarm manager可以设置一个PublishedPort给service,如果不指定PublishedPort,则是在30000-32767这个范围内自动选择。外部的请求,例如LB,可以通过PublishedPort来访问服务,但是这个LB的服务必须在node集群上,swarm集群中的所有节点都会连接到正在运行的service上,而不论该node上是不是有运行该service服务。在swarm内部有一个DNS,可以自动的分片在swarm中每个service的entry,swarm manager使用内部LB来分发请求到集群内部的service上

感谢各位的阅读,以上就是“Docker swarm mode有什么用”的内容了,经过本文的学习后,相信大家对Docker swarm mode有什么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI