agent启动

主入口

src/slave/main.cpp

  • 132-181:处理命令行参数
  • 183:加载命令行中指定的MESOS_开头的环境变量
  • 185-193:若只是输出帮助信息或者版本信息,输出后退出
  • 202-212:若指定的master或者master_detector组合不正确,报错退出
  • 215-240:初始化libprocess
  • 254:生成slave的进程ID
  • 259-265:初始化slave进程
  • 267:LOG初始化
  • 274:启动VersionProcess
  • 276-292:处理防火墙。。。。。。。。。。。。
  • 295-312:初始化模块,ModuleManager
  • 315-329:创建所有的匿名模块
  • 332-337:初始化HOOK(HooKManager)
  • 341-354:初始化systemd。。。。。。。。。。
  • 357-365:定义fetcher变量,初始化容器支持Containerizer::create
  • 367-375:创建MasterDetector,MasterDetector::create
  • 377-409:创建authorizer。。。。。。。。。。
  • 412-422:创建resourceEstimator。。。。。。
  • 424-431:创建qosController。。。。。。。。。。。。
  • 436-448:创建新的Slave对象并启动
  • 449:等待Slave对象结束
  • 451-465:清理各种对象并退出

创建新的Slave对象

src/slave/slave.cpp

133-166:初始化Slave对象的各个变量

slave对象初始化

src/slave/slave.cpp/Slave::initialize

  • 198-208:输出一些信息
  • 210-313:准备cgroups。。。。。。。
    • 创建与slave相关的cgroups
    • 将所有线程移到创建的cgroups下
  • 315-320:命令行指定的registration_backoff_factor不能大于REGISTER_RETRY_INTERVAL_MAX
  • 322-376:处理认证相关信息
  • 378-382:
  • 384-397:。。。。。。。。。。。。。。。。
  • 400-401:创建agent的工作目录
  • 403-407:根据命令行。。。。。得到资源。。。。。。。。。。。。。。
  • 410-414:对资源中的所有disk资源
    • 417-427:若是PATH,创建它试试。。。。。。。
    • 428-476:或是MOUNT,。。。。。。。。。
    • 477-480:不支持的。。。。
  • 483-486:从命令行获得属性。。。
  • 489-507:处理hostname(调用net::getHostname(self().address.ip)
  • 510-511:初始化slave info,设置hostname,端口
  • 513-525:。。。。。。。。。。。
  • 530:agent问题允许checkpoint
  • 546-629:安装针对protobuf消息的处理函数(557行)
  • 632-704:建立处理HTTP请求的函数对应关系
  • 708-713:建立一个可调用的函数authorize,其中会调用dispatch将slavePid,principal分配给Slave::authorizeLogAccess函数执行)
  • 717-733:处理log
  • 736-740:检查是否有重连或恢复标志
  • 745-755:安装Ctrl+C的处理函数
  • 758-761:recovery。。。。。。。。。

容器初始化Containerizer::create

src/slave/containerizer/containerizer.cpp

参数:

  • flags
  • local
  • fetcher

流程:

  • 192-211:若flags中有external,则调用ExternalContainerizer::create并返回
  • 215-221:从flags.containerizers中得到容器类型(docker/mesos)
  • 224-271:处理与Nvidia GPU相关的isolation,volume等
  • 279-317:对于每种容器类型,调用相应的创建函数(MesosContainerizer::create,DockerContainerizer::create,ExternalContainerizer::create)得到对象,并存放在变量containerizers中
  • 319-321:若只定义一种类型,则直接返回
  • 323-330:创建一个组合容器对象并返回ComposingContainerizer::create(containerizers)

results matching ""

    No results matching ""