主要对象定义

Framework

src/slave/slave.hpp

  • 888-892:定义了两种状态RUNNING/TERMINATING
  • 897:指向agent的指针
  • 899:info:FrameworkInfo,framework相关信息
  • 906:pid:framework对应的调度器的pid,若使用HTTP接口则没有pid,消息通过master传递
  • 909:pending:挂起的tasks
  • 912:executors:运行的executors
  • 915:completedExecutors已经完成的executors

877-884:定义几个函数

  • 启动executor
  • 删除executor
  • 根据ID获得executor
  • 根据task ID获得对应的executor
  • 恢复executor状态
  • checkpointFramework

Framework的实现在src/slave/slave.cpp

初始化

5577-5585定义了Framework构造函数:状态设为RUNNING,根据参数初始化slave、info、pid,初始化completedExecutors

Framework::checkpointFramework

调用state::checkpoint

Framework::launchExecutor

参数:

  • executorInfo
  • taskInfo

  • 5631-5632:生成一个随机UUID,作为executor的容器ID

  • 5635-5650:从info中获得用户名
  • 5654-5660:为executor创建目录
  • 5662-5663:新的Executor对象
  • 5665-5666:若需要,则执行恢复
  • 5672:将刚生成的executor登记在本Framework的executors中,表示正在运行的executors
  • 5679-5682:获得executor/framework的ID,获得slave的PID
  • 5684-5692:设置authorize为lambda函数,将调用Slave::authorizeSandboxAccess
  • 5694-5695:调用slave->files->attach,该函数完成后得到。。。。在该组上对每一个调用Slave::fileAttached
  • 5702-5705:得到executorInfo_并计算resources
  • 5709:若executor不是一个command executor,则
    • 5714-5721:task是包含在executor中的,调用slave->containerizer->launch,不需要提供taskInfo。什么情况是这样的呢?????????
    • 5722-5740:task未包含在executor中,是定义了一个命令或是容器运行,调用slave->containerizer->launch,需要提供taskInfo
  • 5742-5747:对刚刚启动的每个task,调用Slave::executorLaunched
  • 5750-5755:确保在给定的时间内注册上了,调用Slave::registerExecutorTimeout

FrameworkInfo、FrameworkID在include/mesos/mesos.proto定义

results matching ""

    No results matching ""