我正在研究Mesos代码,对执行简单docker镜像的内部工作流程感到非常困惑, 如下:
mesos-execute --master=XXX \
--containerizer=docker \
--name=test \
--docker_image=XXX \
--shell=false
我相信/src/cli/execute.cpp
是这个“mesos-execute”的实现,在官方文档中称为“Command Executor”。
我看到execute.cpp
在内部设置了一个CommandScheduler
,它有一个void received(queue<Event> events)
函数,用于侦听来自主服务器的事件。如果它收到Event::OFFERS
,它将启动在提供的资源(代理)上执行任务的过程。
但是,我无法找到提供给客户端可执行文件的资源的确切位置。
我看到void Master::offer(…)
中有一个/src/master/master.cpp
函数。但它发送ResourceOffersMessage
,而不是事件,并且不会将事件转换为消息。
我发现只有/src/sched/sched.cpp
才能接收和处理此类消息。但我不知道sched.cpp
在其他代码中是如何使用的......
因此,我找不到将提供的资源(从主服务器)发送到Command Executor的确切工作流程。 此命令执行程序的调度程序是什么? 有人能帮我理解吗?
由于
答案 0 :(得分:0)
我相信
/src/cli/execute.cpp
是这个“mesos-execute”的实现,在官方文档中称为“Command Executor”。
Command Executor 是一个通用执行程序,根据文档"enough functionality for a wide variety of framework requirements"。执行程序负责启动由调度程序准备的TaskInfo
消息中描述的任务。
确实,Master发送了一条资源提供消息,但evolve
发送给具有正确类型的完整事件。
CLI使用scheduler::Mesos
根据文档“将调度程序连接到Mesos主站的具体实现。摘要主检测(连接和断开连接)。” received
是传递了一个回调并被这个lib调用。