我想运行一个混合了公共和私人应用程序的mesos/marathon集群。似乎应该可以利用角色来实现这一点,但我没有成功。
作为概念证明,我有一个Mesos星团 public
以及 private
角色:
# curl --silent localhost:5050/roles | jq '.' | grep name
"name": "*",
"name": "public",
"name": "private",
马拉松和我的马拉松应用程序出现了问题。我无法设置 default_accepted_resource_roles
一个不同于 mesos_role
. 例如,如果我设置 --mesos_role=public
以及 --default_accepted_resource_roles=public
,我可以运行应用程序,但前提是它们包括 "acceptedResourceRoles": [ "public" ]
在应用程序描述中。相反,我可以把一切都设置为 private
运行私人应用程序(不过,讽刺的是,如果我把一切 *
我无法运行我的应用程序。我完全不明白。)
理想情况下,我希望这样:
mesos_role=*
default_accepted_resource_roles=private
我希望这可以让马拉松访问我所有的角色,但启动应用程序与 private
除非他们特别要求 public
角色。不幸的是,这会导致以下错误:
Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: --default_accepted_resource_roles contains roles for which we will not receive offers: private
马拉松拒绝开始。
你能和我一起跑马拉松吗 --mesos_role=*
以及 --default_accepted_resource_roles=private
? 如果不是,我不明白为什么角色存在。但我宁愿尽可能多地在一个集群中运行,也不愿为公共和私人应用程序构建单独的集群。
1条答案
按热度按时间uelo1irk1#
@作为一个解决办法,我们部署了多个马拉松。作为应用程序在主马拉松上运行的主马拉松和其他两个马拉松,通常每个角色一个。
假设您有两个角色“kafka”和“hdfs”,例如默认角色的主马拉松跑步(即*)在主马拉松上有两个角色-mesos\u角色kafka(命令行选项)在主马拉松上有两个角色-mesos\u角色hdfs也在主马拉松上有两个角色-mesos\u角色hdfs
要使应用程序使用分配给kafka角色的资源,您需要在kafka marathon而不是main marathon中启动作业。