栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

docker之swarm

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker之swarm

前言:

1. 目前涉及Docker集群的三个主要的技术:Swarm、Kubernetes、Mesos
2.跟集群管理有关的任何操作,都是在管理节点上操作的
3.一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader
4.工作节点是任务执行节点,管理节点将服务 (service)
下发至工作节点执行。
5.管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。
6.任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。
服务 (Services) 是指一组任务的集合,服务定义了任务的属性。服务有两种模式:
replicated services 按照一定规则在各个工作节点上运行指定个数的任务。
7.global services 每个工作节点上运行一个任务
两种模式通过 docker service create 的 --mode 参数指定。

一、环境
前提:已经安装docker

master: 192.168.199.205   node5
slave:  192.168.199.201   node1
slave:  192.168.199.204   node4

二、在master上初始化swarm集群

# docker swarm init --advertise-addr 192.168.199.205
Swarm initialized: current node (384b1n06gqyd1qzca3qsa5rze) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-05i7m1hheiug1tc4k5gn45dixnpr79z2qx6wlzkoapbe6ja0xk-az9liy4nhh9fp5lhzcmtkjgu3 192.168.199.205:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

PS:

1、上面命令执行后,该机器作为管理者自动加入到swarm集群。
2、创建唯一集群token。
3、--advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系,只有一个ip时可省略
4、命令的输出包含了其它节点如何加入集群的命令。

三、把两台slave加入到集群中,两台都执行下面的命令

# docker swarm join --token SWMTKN-1-05i7m1hheiug1tc4k5gn45dixnpr79z2qx6wlzkoapbe6ja0xk-az9liy4nhh9fp5lhzcmtkjgu3 192.168.199.205:2377
This node joined a swarm as a worker.

四、查看集群情况,这个只能在主节点上执行

# docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
h64l7lz81c1st89rqjtv5qwtq     node1      Ready     Active                          20.10.12
wulu0eqjkityb6boqw5q0loou     node4      Ready     Active                          20.10.12
n9smsaupn0ckb7pqqatvpebs0 *   node5      Ready     Active         Leader           20.10.9

更改节点的availablity状态:
1、swarm集群中node的availability状态可以为active或者drain,
其中:
1.1:active状态下,node可以接受来自manager节点的任务分派;
1.2:drain状态下,node节点会结束task,且不再接受来自manager节点的任务分派(也就是下线节点)。

更改状态:

下线:(之前已经接受的任务也会转移到别的节点上)
docker node update --availability drain node1 
上线:
docker node update --availability active node1

五、学习新建一个服务

PS:最好加上 --name=xxxx,不然不好查找
[root@node5 ~]# docker service create --replicas 1 nginx
qtkty6bgac6tisst6k7u2wcv9
overall progress: 1 out of 1 tasks
1/1: running   [==================================================>]
verify: Service converged

查看运行:

[root@node5 ~]# docker node ps --filter "desired-state=running" $(docker node ls -q)
ID             NAME                  IMAGE          NODE      DESIRED STATE   CURRENT STATE           ERROR     PORTS
fd18g1lyqynm   frosty_chatterjee.1   nginx:latest   node5     Running         Running 4 minutes ago

扩充为俩:

[root@node5 ~]# docker service scale frosty_chatterjee=2
frosty_chatterjee scaled to 2
overall progress: 2 out of 2 tasks
1/2: running   [==================================================>]
2/2: running   [==================================================>]
verify: Service converged

再次查看,发现随机在node1上多了一个服务

[root@node5 ~]#  docker service ps frosty_chatterjee
ID             NAME                  IMAGE          NODE      DESIRED STATE   CURRENT STATE            ERROR     PORTS
fd18g1lyqynm   frosty_chatterjee.1   nginx:latest   node5     Running         Running 8 minutes ago
ubtio4pn7vt2   frosty_chatterjee.2   nginx:latest   node1     Running         Running 50 seconds ago

六、一些常用操作
列出集群中所有节点上正在运行的容器:

docker node ps --filter "desired-state=running" $(docker node ls -q)

如果忘记token

docker swarm join-token manager

查看集群信息

docker info

停止某个服务并删除

docker service rm  service_NAME

查看已经在运行的服务

docker service ls

帮助

 docker service --help

查看某个服务运行状态

docker service ps service_NAME
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709265.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号