前言:
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)