Docker教程总结九:(swarm节点标签与服务约束即强制指定容器节点)

Docker教程总结九:(swarm节点标签与服务约束即强制指定容器节点)

Docker教程总结九:(swarm节点标签与服务约束即强制指定容器节点)

多节点 Swarm 集群下,可能节点的配置不同(比如 CPU、内存等),部署着不同类型的服务(比如 Web服务、Job服务等),当这些服务以 Service 或者 Stack 的形式部署到集群,默认情况下会随机分配到各个节点。不同类型的服务对服务器需求的资源是不同的,为了更合理的利用服务器资源,我们可能希望某些服务能够部署到指定的服务器上。另外一种场景,Swarm 集群中的节点跨机房,为了内部服务间通信更快,我们可能希望关联比较密切的服务能够部署到同一机房的节点上。那么,如何做到呢?

很简单,先给节点添加标签,然后服务发布时添加限制条件即可!

Node Label 管理

示例集群信息:

添加标签

查看标签

删除标签

服务部署条件约束

Service 方式

Stack 方式

constraints 为数组,填写多个约束时,它们之间的关系是 AND

条件约束补充

constraints 可以匹配 node 标签和 engine 标签,engine.labels 适用于 Docker Engine 标签,如操作系统,驱动程序等,node.labels 适用于上述人为添加到节点的。

node attribute matches example
node.id Node ID node.id==2ivku8v2gvtg4
node.hostname Node hostname node.hostname!=node-2
node.role Node role node.role==manager
node.labels user defined node labels node.labels.security==high
engine.labels Docker Engine’s labels engine.labels.operatingsystem==ubuntu 14.04

转载备份:https://www.jianshu.com/p/2a11a40a9573