全部产品
容器服务

指定节点调度

更新时间:2017-08-28 13:42:32   分享:   

swarm mode 集群支持在容器服务管理控制台上通过设置界面上的参数或者通过编写编排模板来设置节点的约束条件。

注意:部署约束只对新创建容器生效,对老容器变更配置时不起作用。

通过界面上的参数进行设置

您可以在 使用镜像创建应用 时,设置 约束

1

通过编排模板进行设置

模板版本支持

Compose V1/V2 Compose V3
constraint 关键字 Compose 中的 placement 一节。该功能由 swarm mode 原生提供,可设置部署约束。

Compose V1/V2

如果您需要将某个服务部署在指定的节点上,可以使用 constraint 关键字来实现这个功能。

在下面的示例中,服务指定部署在 node1 上。

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

Compose V1/V2 支持以下表达式。

表达式说明
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 容器的机器上。

Compose V3

在 compose V3 中,同样通过 constraints 关键字进行设置,但语法和 compose V1/V2 不同,且支持多种部署限制。

在下面的示例中,服务指定部署到 Manager 节点上。

  1. version: '3'
  2. services:
  3. web:
  4. image: wordpress:4
  5. ports:
  6. - 80
  7. depends_on:
  8. - mysql
  9. deploy:
  10. replicas: 3
  11. restart_policy:
  12. condition: on-failure
  13. placement: #注意
  14. constraints:
  15. - node.role == manager
  16. labels:
  17. aliyun.routing.port_80: wordpress
  18. mysql:
  19. image: mysql:5.7
  20. environment:
  21. - MYSQL_ROOT_PASSWORD=password
  22. deploy:
  23. restart_policy:
  24. condition: on-failure

compose V3 支持以下语法。

节点属性 说明 例子
node.id 节点的 ID。 node.id == 2ivku8v2gvtg4
node.hostname 节点的 hostname。 node.hostname != node-2
node.role 节点的 role,可以是 Manager 或 Worker。 node.role == manager
node.labels 用户自定义的节点用户标签。 node.labels.security == high
engine.labels Docker Engine 的标签。 engine.labels.operatingsystem == ubuntu 14.04
本文导读目录
本文导读目录
以上内容是否对您有帮助?