Docker swarm基本命令,更复杂的生产环境请仔细参阅文档。
创建Swarm
准备两台服务器A、B
给服务器安装docker
确保所有服务器的防火墙开启了以下端口
- TCP/2377
- TCP/7946
- UDP/7946
- UDP/4789
ssh到A上,执行docker swarm init ,A将作为manager,会输出类似下列的内容:
To add a worker to this swarm,run the following command:
docker swarm join
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c
<ip>:2377
To add a manager to this swarm,run 'docker swarm join-token manager' and follow the instructions.
ssh到B上,执行上面提到的docker swarm join ... 指令,B将作为worker
执行docker node ls ,查看Swarm集群node
node管理
添加manager
生产环境中应该有多个manager来保证高可用,manager的数量应该是单数,比如1、3、5。
到manager机器上,执行docker swarm join-token manager ,得到以下输出:
docker swarm join --token SWMTKN-1-0tfd7v1bu05od7fdsedqdu6tuny6ozjmfrq3hiwmc1xb5yaxix-e7kpq257cyblpdna9j89cjgyw <ip>:2377</code></pre>
到新机器上执行上述指令,添加manager
添加worker
到manager node上执行docker swarm join-token worker ,得到以下输出:
docker swarm join --token SWMTKN-1-0tfd7v1bu05od7fdsedqdu6tuny6ozjmfrq3hiwmc1xb5yaxix-1fc3updzbx9tssop55yznh79w <ip>:2377</code></pre>
到新机器上执行上述指令,添加worker
更新节点AVAILABILITY
节点AVAILABILITY有三种状态:
-
ACTIVE :可以安排新的工作负载到这个节点
-
PAUSE :不会安排新的工作负载到这个节点,但是已经存在的负载继续运行
-
DRAIN :不会安排新的工作负载到这个节点,已经存在的负载会被驱逐到其他node上
注意,上面提到的禁止安排、驱逐工作负载仅针对于docker service create ... 、docker stack deploy ... 创建的工作负载。对于docker run ... 、docker compose up ... 的工作负载不起作用。
运行以下命令更新节点的AVAILIBALITY:
比如:
禁止manager承担工作负载
默认情况下manager也承担工作负载,在生产环境中这样不太好,因为manager可能会因为工作负载过多而变得卡顿,导致无法工作。
解决办法很简单,将manager的AVAILIBALITY变成DRAIN 就行了
删除节点
到服务器上执行 docker swarm leave
如果是manager,则可能会报warning,你只需要这样docker swarm leave --force
清理swarm
删除所有manager和worker节点,swarm就被清理掉了。
参考文档
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|