zoukankan      html  css  js  c++  java
  • 【原创】k8s源代码分析-----kubelet(1)主要流程


    本人空间链接http://user.qzone.qq.com/29185807/blog/1460015727

    源代码为k8s v1.1.1稳定版本号

    kubelet代码比較复杂。主要是由于其担负的任务比較多。以下我们将慢慢的分析

    一、主要流程

    1、main入口

    k8s.iokubernetescmdkubeletkubelet.go

    依然是这样的风格的main


    继续看app

    NewKubeletServer 主要是一些參数的初始化



    然后在后面也有一些flag參数的获取,就不贴图了。

    2、进入KubeletServer.Run

    代码比較长。其从整个Run代码来看,整个过程都是一个前期的准备工作。比方一些參数的准备。真正的执行还不是在这里。


    上面的代码中,准备了一个KubeletConfig。这个是基本的配置參数


    上面的代码中RunKubelet是下一个入口


    上面图中的代码就简单了不做解释

     

    3、 RunKubelet

    代码太长,就截取当中比較重要的

    func RunKubelet(kcfg *KubeletConfig, builder KubeletBuilder) error {


    以上有个createAndInitKubelet,这个非常重要

    我们看看先


    从上面能够看到pc。有个NewMainKubelet

    以下进入startKubelet


    我们看到Kubelet.Run。这个才是真正的入口

     

    4、Kubelet,真正入口

    k8s.iokubernetespkgkubelet kubelet.go

    4.1、NewMainKubelet

    func NewMainKubelet(


    dockerclient初始化


    serviceLister 和nodeLister初始化(这个和前面几篇文章分析中的非常类似,详细里面就不再做分析了)


    containerGC

    imageManager

    diskSpaceManager

    statusManager

    readinessManager

    containerRefManager

    volumeManager

    oomWatcher

    我们看到了这么多的manager


    然后就是容器的类型,这里我们就看docker

    再接着



    containerManager

    containerRuntime

    podManager

    runtimeCache

    等等

     

    我们如今回忆下就会豁然开朗。在k8s.iokubernetescmdkubeletapp 中主要是做一些參数的简单处理,详细的初始化事实上是在k8s.iokubernetespkgkubelet kubelet.go中的NewMainKubelet。其构建的模块数量之多,也是其功能强大之处。

     

    4.2 func (kl *Kubelet) Run

    真正的Run入口,这个是在之前的k8s.iokubernetescmdkubeletapp中的startKubelet中运行的


    我们看到了熟悉的

    imageManager.Start()

    cadvisor.Start()

    containerManager.Start


    还有

    oomWatcher.Start

    updateRuntimeUp

    podKiller

    statusManager.Start()

    最后的kl.syncLoop(updates, kl)

     

     

     

     

    龚浩华

    qq 月牙寂 29185807

    2016年4月7日

    (版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。

    擅自转载的,保留追究其侵权的权利。

  • 相关阅读:
    maven 错误:HttpServlet was not found on the Java
    maven 配置Project Facets时further configuration available不出来问题
    maven 解决Cannot change version of project facet Dynamic web module to 2.5
    maven 怎么在MyEclipse中打开Navigator视图
    maven web项目不能创建src/main/java等文件夹的问题
    Maven 使用Eclipse构建Maven的SpringMVC项目
    Maven 异常:Project configuration is not up-to-date with pom.xml解决方案
    Eclipse 配置Maven以及修改默认Repository
    Android Java Mail与Apache Mail发送邮件对比
    Android JavaMail介绍及发送一封简单邮件
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7308368.html
Copyright © 2011-2022 走看看