docker swarm

1.Swarm
集群的管理和编排是使用嵌入docker引擎的SwarmKit,可以在docker初始化时启动swarm模式或者加入已存在的swarm
 
2.Node
一个节点是docker引擎集群的一个实例。您还可以将其视为Docker节点。您可以在单个物理计算机或云服务器上运行一个或多个节点,但生产群集部署通常包括分布在多个物理和云计算机上的Docker节点。
要将应用程序部署到swarm,请将服务定义提交给 管理器节点。管理器节点将称为任务的工作单元分派 给工作节点。
Manager节点还执行维护所需群集状态所需的编排和集群管理功能。Manager节点选择单个领导者来执行编排任务。
工作节点接收并执行从管理器节点分派的任务。默认情况下,管理器节点还将服务作为工作节点运行,但您可以将它们配置为仅运行管理器任务并且是仅管理器节点。代理程序在每个工作程序节点上运行,并报告分配给它的任务。工作节点向管理器节点通知其分配的任务的当前状态,以便管理器可以维持每个工作者的期望状态。
 
3.Service
一个服务是任务的定义,管理机或工作节点上执行。它是群体系统的中心结构,是用户与群体交互的主要根源。创建服务时,你需要指定要使用的容器镜像。
 
4.Task
任务是在docekr容器中执行的命令,Manager节点根据指定数量的任务副本分配任务给worker节点
 
------------------------------------------使用方法-------------------------------------
docker swarm:集群管理,子命令有init, join, leave, update。(docker swarm --help查看帮助)
docker service:服务创建,子命令有create, inspect, update, remove, tasks。(docker service--help查看帮助)
docker node:节点管理,子命令有accept, promote, demote, inspect, update, tasks, ls, rm。(docker node --help查看帮助)
   
node是加入到swarm集群中的一个docker引擎实体,可以在一台物理机上运行多个node,node分为:
manager nodes,也就是管理节点
worker nodes,也就是工作节点
 
1)manager node管理节点:执行集群的管理功能,维护集群的状态,选举一个leader节点去执行调度任务。
2)worker node工作节点:接收和执行任务。参与容器集群负载调度,仅用于承载task。
3)service服务:一个服务是工作节点上执行任务的定义。创建一个服务,指定了容器所使用的镜像和容器运行的命令。
   service是运行在worker nodes上的task的描述,service的描述包括使用哪个docker 镜像,以及在使用该镜像的容器中执行什么命令。
4)task任务:一个任务包含了一个容器及其运行的命令。task是service的执行实体,task启动docker容器并在容器中执行任务。

	------------------Swarm cluster的创建过程包含以下三个步骤----------------------
1)发现Docker集群中的各个节点,收集节点状态、角色信息,并监视节点状态的变化
2)初始化内部调度(scheduler)模块
3)创建并启动API监听服务模块
   
一旦创建好这个cluster,就可以用命令docker service批量对集群内的容器进行操作,非常方便!
   
在启动容器后,docker 会根据当前每个swarm节点的负载判断,在负载最优的节点运行这个task任务,用"docker service ls" 和"docker service ps + taskID"
可以看到任务运行在哪个节点上。容器启动后,有时需要等待一段时间才能完成容器创建

IP:192.168.50.1 担任角色:swarm manager
IP:192.168.50.2 担任角色:swarm node
IP:192.168.50.3 担任角色:swarm node

	创建集群并且添加节点
	1) 创建Swarm集群 在50.1机上上操作,这样就是管理节点,执行其中一条命名就行
	#docker swarm init --listen-addr 0.0.0.0
	#docker swarm init --advertise-addr 192.168.50.1
	会出现一句docker swarm join --token SWMTKN-1-2lefzq18zohy9yr1vskutf1sfb2a590xz9d0mjj2m15zu9eprw-2938j5f50t35ycut0vbj2sx0s 192.168.50.1:2377的语句,这个语句是后续将其他节点加入集群都会用到这个token值。
	要是忘记了加入集群的有语句,可以在管理节点上运行docker swarm join-token manager可以查看到加入的语句
	比如在50.2和50.3执行,就会加入到集群里面
	docker swarm join --token SWMTKN-1-2lefzq18zohy9yr1vskutf1sfb2a590xz9d0mjj2m15zu9eprw-2938j5f50t35ycut0vbj2sx0s 192.168.50.1:2377
	
    docker swarm leave -f 强制离开集群的语句

    docker info上面的命令执行后 找到Swarm的关键字,就可以看到相关信息了
    docker node ls 查看可以集群有节点
    [root@test1 ~]# docker node ls
    ID     HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
    093xp423yer6x2a6d7ttxqf8n    test3   Ready   Active        
    7xd2zb7kw8gljwd5u8fgvy66a *  test1   Ready   Active        Leader
    b1h37nx29mqru0rpkzkcogofd    test2   Ready   Active        
    上面的命令是查看集群中的机器(注意上面node ID旁边那个*号表示现在连接到这个节点上) 比如现在就是在主机名是test1的机器上
    docker node update --availability drain test3  将test3下线,不会接受管理节点的任务分配
    docekr node rm test3 删除节点,有可能提示错误
    Error response from daemon: rpc error: code = 9 desc = node 093xp423yer6x2a6d7ttxqf8n is a cluster manager and is a member of the raft cluster. It must be demoted to worker before removal
    那么需要先降级docker node demote 093xp423yer6x2a6d7ttxqf8n 之后再删除
    升级是docker node promote 093xp423yer6x2a6d7ttxqf8n

在Swarm中部署服务(nginx为例)

 docker service create --replicas 1  --name my_nginx -p 1010:80 nginx 
 --replicas 参数指定服务由几个实例组成 要是这里写3 那么会运行3个nginx任务
docker service ls 查看正在运行服务的列表
ID            NAME      MODE        REPLICAS  IMAGE
e4ji971sip8p  my_nginx  replicated  1/1       nginx:latest

docker service ps  my_nginx 查看哪个节点正在运行该服务
ID            NAME        IMAGE         NODE     DESIRED STATE  CURRENT STATE           ERROR  PORTS
lpge4j4ab23f  my_nginx.1  nginx:latest  test2  Running        Running 41   minutes ago   

 docker service inspect --pretty my_nginx  查询Swarm中服务的信息  不加 --pretty 可以输出更详细的信息 可以查看映射端口
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值