docker之swarm

docker之swarm,第1张

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5707807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存