您的位置:首页 > 运维架构 > Docker

filter控制docker swarm调度

2018-02-28 17:02 323 查看
详细参照官网:https://docs.docker.com/swarm/scheduler/filter/#configure-the-available-filters(本文涉及的docker版本:v17.12)filter可以控制swarm对哪些节点进行container的调度。filter 一共分为两类:node filters 和 container configuration filters。分别针对节点和容器进行过滤。具体的filters如下:

node filters

  constraint:

        docker可以参照默认的 tag 以及定制的 labels 来进行调度。默认tag(docker info 获得)包括:
node
 (参照nodeID 或者 name)
storagedriver
executiondriver
kernelversion
operatingsystem          
定制label方式(需要重新启动docker daemon),这里添加两个label:
$ docker daemon --label environment="production" --label storage="ssd"
使用label:比如需要在定制的storage=ssd label的node上运行一个mysql容器
$ docker tcp://<manager_ip:manager_port>  run -d -P -e constraint:storage==ssd --name db mysql

  health:

    防止容器运行在不健康的节点上,例如down的节点或者是无法“沟通”的节点

  containerslots:

       限制节点最多运行容器的数量
$ docker daemon --label containerslots=3
       这里本节点的容器限制数量为3,若所有节点都达到3,swarm报错。

container configuration filters:

  affinity :

    对象为容器:可以保证容器运行在同一个网络节点中,并且容器会down当被affinity的容器关闭。使用方式:
$ docker tcp://<manager_ip:manager_port> run -d --name logger -e affinity:container==frontend logger
                          logger容器affinity frontend容器,当frontend关闭时,logger也会结束  对象为image:容器将只会被调度到含有该image的node上
$ docker tcp://<manager_ip:manager_port> run -d --name redis1 -e affinity:image==redis redis
  对象为label: 首先容器运行时添加label:                      
$ docker tcp://<manager_ip:manager_port> run -d -p 80:80 --label com.example.type=frontend nginx
                        其次:
$ docker tcp://<manager_ip:manager_port> run -d -e affinity:com.example.type==frontend logger  此时logger就affinity到了nginx容器上。

dependence:

  swarm将会把容器调度到依赖容器对应的节点上,若节点无法创建容器(节点不存在或者节点资源不够),则容器不会被创建。依赖一共是下面3种:
-volumes-from=dependency
 (shared volumes)
--link=dependency:alias
 (links)
--net=container:dependency
 (shared network stacks)  若有多个依赖,则必须同时满足:     --volumes-from=A  --net=container:B  此时swarm会寻找容器A和B所在的节点,若AB不在同一个节点,或者节点资源等不满足,则不会创建。port:  无论是使用bridge模式还是host模式,当宿主机的某个端口在所有的node上都被占用时,容器创建失败。否则swarm选择端口未被占用的node进行调度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: