marathon 约束 Constraints 限制
Constraints控制在何处运行的应用程序,可以根据constraints属性,控制容器可以在哪个Agent节点上运行。
(往上看来好多文档写的都很类似,我就写一些不一样的吧。)
mesos agent 自定义 constraints 属性
rpm 安装的 mesos 可以在 /etc/mesos-slave/attributes 下定义这台agent。
1 | echo "project:ppp1;IDC:BJ;oam:ops1" > /etc/mesos-slave/attributes |
重启mesos-slave服务即可,
1 | systemctl start mesos-slave |
这样这台Agent就有利3个属性。
分别是:
- project:ppp1
- IDC:BJ
- oam:ops1
另外其他的Agent机器耶可以有相同的属性,这样就可以变成一组。(容器可以固定在相同属性的Agent机器上)
源码安装,值需要加上 –attributes 参数即可,
1 | /home/mesos/mesos-slave/sbin/mesos-agent --master=zk://10.0.0.52:2181,10.0.0.53:2181,10.0.0.54:2181/mesos --log_dir=/var/log/mesos --containerizers=docker,mesos --executor_registration_timeout=5mins --work_dir=/home/mesos/mesos --hostname=logstash00 --attributes=project:ppp1;IDC:BJ;oam:ops1 |
marathon 使用 constraints
好了, 现在说说marathon 应该怎么使用 constraints
容器固定在指定的Agent机器上
可以通过 hostaname 来指定容器在哪台Agent上运行。
1 | curl -X POST -H "Content-type: application/json" localhost:8080/v2/apps -d '{ |
每个Agent上运行一个容器
所有应用程序的任务中强制执行属性的唯一性。 确保每个主机上只运行一个应用程序任务。
1 | "constraints": [ |
利用自定义属性约束
根据自定义属性来约束在哪些Agent节点上运行容器。
1 | "constraints": [ |
这样就可以在有 IDC:BJ 的Agent节点上运行容器了,当然,耶可以写多个约束限制天剑的。
不在哪个节点上
指定条件,不在哪个节点运行容器
1 | "constraints": [ |
支持正则
LIKE 接受一个正则表达式作为参数
1 | "constraints": [ |
mesos 可以自定义 constraints 这个就很灵活了,我们在初始化 Agent 节点的时候,就可以定义很多属性来。容器发布的时候我们就很容易约束了。
官方文档:https://mesosphere.github.io/marathon/docs/constraints.html
感觉文章还可以的话,帮忙点点下面的广告哦! 谢谢支持!