apachemesos的命令执行器的调度程序是什么?

z8dt9xmd  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(248)

我正在学习mesos代码,对执行简单docker映像的内部工作流程感到非常困惑,例如:

mesos-execute  --master=XXX \
               --containerizer=docker \
               --name=test \
               --docker_image=XXX \
               --shell=false

我相信 /src/cli/execute.cpp 是这个“mesos execute”的实现,在公文中被称为“command executer”。
我懂了 execute.cpp 内部设置 CommandScheduler ,它有一个 void received(queue<Event> events) 侦听来自主服务器的事件的函数。如果它收到 Event::OFFERS ,它将启动在提供的资源(代理)上执行任务的过程。
但是,我找不到提供给客户机可执行文件的资源的确切位置。我看到有一个 void Master::offer(…) 中的函数 /src/master/master.cpp . 但它发出了一个信号 ResourceOffersMessage ,不是事件,也没有将事件转换为消息。我发现只有 /src/sched/sched.cpp 可以接收和处理这种类型的消息。但我看不出这是怎么回事 sched.cpp 用于其他代码。。。。
因此,我找不到将提供的资源(从master)发送到命令执行器的确切工作流。这个命令执行器的调度程序是什么?有人能帮我理解吗?
谢谢

tvz2xvvm

tvz2xvvm1#

我相信 /src/cli/execute.cpp 是这个“mesos execute”的实现,在公文中被称为“command executer”。
命令执行器是一个通用的执行器,根据文档,它具有“足够的功能满足各种各样的框架需求”。executor负责启动中描述的任务 TaskInfo 消息由调度程序准备。
确实,master发送了一个资源提供消息,但是 evolve 以适当的类型将s转换为完整事件。
cli使用 scheduler::Mesos 根据docs,这是“将调度器连接到mesos主机的具体实现。“主检测(连接和断开)”摘要 received 传递回调并由该库调用。

相关问题