默认情况下,多节点swarm集群中的服务会随机部署到某个节点中,如果需要将服务发布到指定节点上,就需要用到节点标签了。
一、给swarm节点添加标签
1、查看swarm集群中有哪些节点,假设节点一的名称是 nodename1,后面以此节点举例
docker node ls
2、为节点一添加 key为group,value为 g1 的标签(注:可以添加多个标签,多个标签的key不能相同)
docker node update --label-add group=g1 nodename1
3、修改节点一的标签,同添加标签的命令相同,key设置为已存在的key则是修改
docker node update --label-add group=g111 nodename1
4、查看节点标签
docker node inspect nodename1
5、删除节点标签
docker node update --label-rm group nodename1
二、将服务发布到指定节点
1、service 方式
docker service create \
--name mynginx \
--constraint 'node.labels.group == g1' \
nginx
2、stack 方式(只展示关键配置)
version: '3.6'
services:
mynginx:
image:
ports:
deploy:
placement:
constraints: # 添加条件约束
- node.labels.group==g1