如何在特定执行程序上启动mesos任务?

use*_*848 5 mesos

我正在编写一个mesos框架,我想使用自定义执行程序执行我的任务.我浏览了几个其他的mesos框架代码库(chronos和marathon)并编写了一个使用默认命令执行程序执行shell命令的调度程序.现在我想用自定义的东西替换默认的执行器.问题是我无法弄清楚如何向slave注册执行程序.有关构建框架的文档声明它应该是可执行文件,您可以使用executorInfo提供路径,但我不确切知道如何执行它.另外,拥有每个执行程序必须实现的Executor接口,同时还需要一个可执行文件的重点是什么?可执行文件的参数是什么?

小智 4

针对 mesos 库的执行器可执行链接和执行器接口/回调是当从属设备中发生注册、重新注册和断开连接等事件或框架发出 launchTask 或 KillTask​​ 请求时通知您的唯一方法。

它分为两部分(就像框架一样),由 ExecutorDriver 和执行器实现组成。

如果您查看 mesos/executor.hpp,您会注意到构造函数需要一个指向执行器的指针。例如

class MyExecutor : public Executor {
  /* Implement registered, reregistered, ... */
}

MesosExecutorDriver* driver = new MesosExecutorDriver(new MyExecutor());
driver->run();
// As long as the executor is running, the callbacks in MyExecutor will
// be invoked by the mesos slave when events and requests are received.
Run Code Online (Sandbox Code Playgroud)

不同的回调将为您提供必要的协议缓冲区(在 mesos.proto 中定义),例如 launchTask 中的 TaskInfo、killTask​​ 中的 TaskID 等。

当它到达框架端并且您想注册自己的执行器时,请尝试查看https://github.com/mesosphere/mesos-go/blob/master/src/mesos.apache.org/example_framework/ main.go

希望这会有所帮助,并让我知道是否需要扩展上述任何内容。