如何识别由于资源耗尽而导致的Marathon App部署失败?

时间:2016-02-17 01:40:35

标签: mesosphere marathon

我在' v2 / apps'上使用POST创建了一个Marathon应用程序。 REST界面。如果我尝试创建一个在底层mesos集群上没有可用资源的应用程序(在本例中为host_port),则应用程序创建仍会返回S_OK,而应用程序将永远停留在部署状态(状态永远不会切换为正在运行)。

如果资源不可用 - 或至少 - 是否有办法让应用程序创建API失败,以查询状态并确定应用程序因资源耗尽而无法快速部署而停止部署?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

以下是marathon-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