开发者社区> 问答> 正文

Swarm 集群 如何指定节点调度


如果您需要将某个服务部署在指定的节点上,可以使用 constraint 关键字来实现这个功能。
[backcolor=transparent]注意:部署约束只对新创建容器生效,对老容器变更配置时不起作用。
在下面的示例中,服务指定部署在 node-1 上。

  1. [backcolor=transparent]web[backcolor=transparent]:
  2. [backcolor=transparent]    image[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'nginx:latest'
  3. [backcolor=transparent]    restart[backcolor=transparent]:[backcolor=transparent] always
  4. [backcolor=transparent]    environment[backcolor=transparent]:
  5. [backcolor=transparent]        [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]'constraint:aliyun.node_index==1'
  6. [backcolor=transparent]    ports[backcolor=transparent]:
  7. [backcolor=transparent]        [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]80
  8. [backcolor=transparent]    labels[backcolor=transparent]:
  9. [backcolor=transparent]        aliyun[backcolor=transparent].[backcolor=transparent]scale[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]2

容器服务支持以下表达式:
[backcolor=transparent]表达式[backcolor=transparent]说明
constraint:aliyun.node_index==1指定部署到 node1。
constraint:aliyun.node_index!=1不部署到 node1。
constraint:aliyun.node_index==(1|2|3)指定部署到 node1 或者 node2 或者 node3。
constraint:aliyun.node_index!=(1|2|3)部署到除 node1、node2、node3 的其他机器上。
affinity:image==~redis尽量部署到有 Redis 镜像的机器上。
affinity:service!=~redis尽量不部署到有 Redis 容器的机器上。

展开
收起
反向一觉 2017-10-30 09:37:59 2860 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
如何让k8s集群30s扩容3000个Pod 立即下载
基于ECI的ACK集群高弹性架构 立即下载
云原生时代下的分布式云多集群管理-容灾,弹性,多集群负载分布 立即下载