【云星数据---mesos实战系列】:marathon实战Constraints篇-001

来源:互联网 发布:itunes下载安装软件 编辑:程序博客网 时间:2024/05/29 04:16

1.概念

  • Marathon可以通过Constraints来控制其app在何处运行
  • 我们可以通过Marathon的REST API或者Marathon gem(marathon client)来设置app的constraints配置。
  • Constraints由三个部分组成:

    字段名(field name),操作(operator), 可选参数(optional parameter)
    其中字段名(field name)可以为mesos的一个slave的hostname或者Mesos slave的attribute。

2.实战

接下来我们结合实战,来介绍下Marathon Constrains的用法

这里写图片描述

字段名

Hostname字段

hostname 匹配slave的hostnames。
hostname支持所有的operator

Attribute字段

attribute 匹配Mesos slave的attributes字段。我们可以通过在mesos节点上运行mesos­slave
­­help来学习如何设置mesos slave的attributes。

操作

UNIQUE operator

UNIQUE tells Marathon to enforce uniqueness of the attribute across all of an app’s tasks.

$ curl -v -X POST http://192.168.100.30:8080/v2/apps \  -H Content-Type:application/json -d '{    "id":"dataman",    "container": {    "type": "DOCKER",      "docker": {        "image":"192.168.100.13:5000/fchen/mynginx",        "network": "BRIDGE",        "portMappings": [          { "containerPort": 80, "hostPort": 0, "protocol": "tcp"}        ]      }    },    "constraints": [["hostname", "UNIQUE"]],    "cmd": "/usr/sbin/nginx -c /etc/nginx/nginx.conf",    "cpus": 0.1,    "mem": 128.0,    "instances": 5  }'
  • field name = hostname, operator = UNIQUE, 在每个slave上只起一个instance。
  • 由于我们申请了5个nginx instance,而我们Mesos集群节点只有4个slave,所以我们在Marathon的管理界面上看到app dataman为Deploying状态。

这里写图片描述

阅读全文
0 0
原创粉丝点击