概念
swarm需要一台节点作为manager node
swarm需要开放以下端口:
- TCP port 2377 for cluster management communications
- TCP and UDP port 7946 for communication among nodes
- UDP port 4789 for overlay network traffic
swarm集群的操作主要围绕几个场景:
- 集群的创建
- 节点加入或退出集群
- 在集群中部署任务(service)
- 集群的健康数据管理
swarm的创建
创建
在manager节点上运行:
docker swarm init --advertise-addr 192.168.99.100
该命令产生一个token, 例如:
SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c
其他节点利用该token加入swarm
查看token
在manager节点上运行
- 查看worker使用的token
docker swarm join-token worker
- 查看manager使用的token:
docker swarm join-token worker
查看本节点swarm状态
$ docker info Containers: 2 Running: 0 Paused: 0 Stopped: 2 ...snip... Swarm: active NodeID: dxn1zf6l61qsb1josjja83ngz Is Manager: true Managers: 1 Nodes: 1 ...snip..
查看node节点
以下都在manager节点上运行
- 查看node列表:
docker node ls
- 查看单个节点:
docker node inspect --pretty <NODE-ID>
node操作
包括添加,删除,查看node
加入swarm
首选需要获取swarm的token,如果记不住,在最初的manager机器上查看token:
docker swarm join-token worker
在worker机器上运行:
docker swarm join \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.99.100:2377
删除node
首先在worker机器上运行:
docker swarm leave
然后在manager机器上运行:
docker node rm <NODE-ID>
暂停/激活node
node直接删除是危险的,尤其是上面正在运行着任务。因此docker提供暂停node的方法,drain。当暂停之后,该node就不会再派发任务,可以安全移除
在manager节点上运行:
docker node update --availability drain <NODE-ID>
处于drain状态的node可以重新激活使用
docker node update --availability active <NODE-ID>
多manager操作
swarm是可以有多个manager的,manager之间采用raft共识
增加manager
增加manager的命令和增加worker node一样,但使用的token不一样
首先在最初的manager机器上查看token:
docker swarm join-token manager
然后在待加入的manager节点上运行:
docker swarm join \ --token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \ 192.168.99.100:237
退出的操作和普通node并无不同,当最后一个manager node都退出后,swarm就崩了
升降级
swarm还支持把worker node和manager node之间的互换, 以下都在manager节点上操作:
- 从worker node升级到manager node
ocker node promote <NODE-IDs>
- 从manager node降级到worker node
docker node demote <NODE-IDs>
Service操作
包括添加,删除,查看Service等
添加service
在manager上运行:
$ docker service create --replicas 1 --name helloworld alpine ping docker.com
- 指定要部署到几个节点
- 指定要运行的image
查看service
- 查看一共有多少service
docker service ls
- 查看单个servie
docker service inspect --pretty helloworld
- 查看哪些节点运行着该serivce
docker service ps <SERVICE-ID>
删除service
docker service rm helloworld
扩展service运行的节点
docker service scale <SERVICE-ID>=<NUMBER-OF-TASKS>
回复 propecia coupon rite aid 取消回复