Docker Swarm集群如何限制服务在指定节点启动(节点标签与服务约束)

前言

多节点 Swarm 集群部署服务,以 Service 或者 Stack 的形式部署到集群时,默认情况下会随机分配到各个节点。

但是我们有时会根据业务需求,将一个服务部署在指定的服务器上,这种场景就需要用到设置node label(节点标签),发布时添加服务约束实现。

Node Label 管理

以下命令指定节点使用的是ID,同样可以使用节点的HOSTNAME操作
查看集群节点信息
docker node ls
在这里插入图片描述
查看标签
docker node inspect ejxxvy9qx71uh4cs7twgczaui
Docker Swarm集群如何限制服务在指定节点启动(节点标签与服务约束)_第1张图片
添加标签

docker node update --label-add role=cluster0001 ejxxvy9qx71uh4cs7twgczaui

在这里插入图片描述
查看是否添加成功

docker node inspect ejxxvy9qx71uh4cs7twgczaui

Docker Swarm集群如何限制服务在指定节点启动(节点标签与服务约束)_第2张图片

删除标签
docker node update --label-rm role ejxxvy9qx71uh4cs7twgczaui
其他节点同样添加标签

服务部署条件约束

以下以安装nginx为例

Service 方式

docker service create \
  --name nginx_test \
  --constraint 'node.labels.role == cluster001' \
  nginx

Stack 方式

version: '3.7'
services:
  nginx:
    image: nginx
    ports:
    - target: 80
      published: 80
      protocol: tcp
      mode: host
    deploy:
      placement:
        constraints: [node.labels.role==cluster0001] # 条件约束
    networks:
      - nginx_network
networks:
  nginx_network:
    external:
      name: nginx_network

手打不易,有用请点赞!

你可能感兴趣的:(docker,docker,swarm,node,label)