2016-02-17 49 views
2

我正在'v2/apps'REST界面上使用POST创建一个Marathon应用程序。如果我尝试创建一个在底层mesos群集上没有可用资源的应用程序(在本例中为host_port),应用程序创建仍会返回一个S_OK,而应用程序永远处于部署状态(状态从不切换到运行状态)。如何识别由于资源耗尽而导致的Marathon App部署失败?

有没有办法在应用程序创建API失败时(或至少)查询状态并确定应用程序由于资源耗尽而停止部署而快速失败?

回答

1

Marathon是运行在Mesos之上的“第二层”调度器。它仅暴露给Mesos分配给它的资源。 Marathon没有全局集群视图,因此它不知道所请求的资源是否可以在集群中的某个地方使用,或者将来可用。

当您向Marathon提交应用程序时,它会验证请求并接受它,并等待来自Mesos的合适报价。在你的情况下,你知道一个合适的报价不会在不久的将来(我想是因为在该特定代理上使用该特定端口还有另一个任务),但Marathon并没有意识到这一点。

1

下面是马拉松的UI使用状态: https://mesosphere.github.io/marathon/docs/marathon-ui.html#application-status-reference

你正在寻找的一个可能的waiting状态,您可以通过查询v2/queue和较长时间检查,如果queueEntry.delay.overdue === true识别。

我刚刚建成惊慌像你描述的一个类似的问题,一些prometheus报警,看到报警MarathonAppCantGetSuitableOffers这里: https://github.com/bergerx/prom_marathon_app_exporter#alerts-on-prometheus

相关问题