我正在学习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)发送到命令执行器的确切工作流。这个命令执行器的调度程序是什么?有人能帮我理解吗?
谢谢
1条答案
按热度按时间tvz2xvvm1#
我相信
/src/cli/execute.cpp
是这个“mesos execute”的实现,在公文中被称为“command executer”。命令执行器是一个通用的执行器,根据文档,它具有“足够的功能满足各种各样的框架需求”。executor负责启动中描述的任务
TaskInfo
消息由调度程序准备。确实,master发送了一个资源提供消息,但是
evolve
以适当的类型将s转换为完整事件。cli使用
scheduler::Mesos
根据docs,这是“将调度器连接到mesos主机的具体实现。“主检测(连接和断开)”摘要received
传递回调并由该库调用。