【发布时间】:2019-02-14 22:32:19
【问题描述】:
我正在尝试使用 Mesos 的 HTTP API。 我尝试使用以下命令订阅已经运行的框架,但它创建了另一个框架而不是订阅现有的框架。此外,响应不包括 mesos-stream-id,因此我无法在使用订阅请求创建的框架上执行另一个命令,例如拆解。
这是我用来订阅现有框架的命令。
curl -H "Host: 149.xxx.xxx.xx:5050" -H "Content-type: application/json" \
-H "Accept: application/json" -H "Connection: close" -X POST \
-d '{"type": "SUBSCRIBE","subscribe" : {"framework_info" :{"user" : "foo","name": "test", "framework_id": {"value" : "ab9cbd17-d7a4-4889-af39-1b372d16cf51-0000"}}, "force": true}}' \
149.xxx.xxx.xx:5050/api/v1/scheduler/
对上述命令的响应是;
423 {"type":"SUBSCRIBED","subscribed":{"framework_id":{"value":"b3a72ba7-e233-45cb-92c5-bd98780e5517-0001"},"heartbeat_interval_seconds":15.0,"master_info":{" id":"b3a72ba7-e233-45cb-92c5-bd98780e5517","ip":1368827285,"port":5050,"pid":"master@149.xxx.xxx.xx:5050","主机名":" 149.xxx.xxx.xx","版本":"1.6.0","地址":{"主机名":"149.xxx.xxx.xx","ip":"149.xxx.xxx.xx ","port":5050},"capabilities":[{"type":"AGENT_UPDATE"}]}}}20 {"type":"HEARTBEAT"}20 {"type":"HEARTBEAT"}20
如您所见,响应具有不同的框架 id,并且不包括 mesos-stream-id。我可以从 web 面板中看到这个新框架实际上是创建的。
有什么想法吗? 谢谢。
【问题讨论】:
-
您是说您在断开连接后尝试重新订阅?如果是这样,您在
SUBSCRIBE消息中提供的框架 ID 是否与初始订阅期间分配给调度程序的框架 ID 相同? -
我正在通过 java 我的 java 代码运行一个框架。当这个框架正在运行时,我想使用 HTTP API 在终端上终止一个任务或拆除整个框架。它要求我没有 mesos-stream-id。我认为如果我订阅框架(我在 mesos 网络面板上看到它的 id),它会返回一个流 id。然后我可以使用它来终止任务或拆除框架。我在这里错过了一点吗。
-
也许你混淆了框架和操作符 HTTP API?在我看来,您试图篡改框架和 Mesos master 之间的连接,我很高兴您失败了。如果您想拆解框架,请查看 mesos.apache.org/documentation/latest/endpoints/master/teardown 。如果您想终止任务,请查看框架的 UI 或 CLI。
-
谢谢 rukletsov。如果您能告诉我如何应对以下情况,我将非常高兴;我正在运行的作业包括在代理上的 docker 容器中运行的任务。其中一项任务是作业主机,它决定何时终止框架或终止少数任务或向作业添加新任务。我可以使用您提到的端点杀死框架。我应该怎么做才能添加或终止任务。正如我提到的,其中一项任务(工作主管)将动态决定这一点。
标签: mesos