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

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

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

一、主要流程

1、main入口

k8s.io\kubernetes\cmd\kubelet\kubelet.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.io\kubernetes\pkg\kubelet\ 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.io\kubernetes\cmd\kubelet\app\ 中主要是做一些參数的简单处理,详细的初始化事实上是在k8s.io\kubernetes\pkg\kubelet\ kubelet.go中的NewMainKubelet。其构建的模块数量之多,也是其功能强大之处。

4.2 func (kl *Kubelet) Run

真正的Run入口,这个是在之前的k8s.io\kubernetes\cmd\kubelet\app\中的startKubelet中运行的

我们看到了熟悉的

imageManager.Start()

cadvisor.Start()

containerManager.Start

还有

oomWatcher.Start

updateRuntimeUp

podKiller

statusManager.Start()

最后的kl.syncLoop(updates, kl)

龚浩华

qq 月牙寂 29185807

2016年4月7日

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

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

【原创】k8s源代码分析-----kubelet(1)主要流程的更多相关文章

  1. 【原创】k8s源代码分析-----kubelet(8)pod管理

    本文QQ空间链接:http://user.qzone.qq.com/29185807/blog/1460540474 本文csdn博客链接:http://blog.csdn.net/screscent ...

  2. kubernetes/k8s CRI分析-kubelet删除pod分析

    关联博客<kubernetes/k8s CRI 分析-容器运行时接口分析> <kubernetes/k8s CRI分析-kubelet创建pod分析> 之前的博文先对 CRI ...

  3. kubernetes/k8s CRI分析-kubelet创建pod分析

    先来简单回顾上一篇博客<kubernetes/k8s CRI 分析-容器运行时接口分析>的内容. 上篇博文先对 CRI 做了介绍,然后对 kubelet CRI 相关源码包括 kubele ...

  4. 【原创】k8s源代码分析-----EndpointController

    转自本人空间 http://user.qzone.qq.com/29185807/blog/1459325937 一.controller manager创建endpointController 代码 ...

  5. memcached源代码分析-----set命令处理流程

    转载请注明出处:http://blog.csdn.net/luotuo44/article/details/44236591 前一篇博文以get命令为样例把整个处理流程简单讲述了一遍.本篇博文将以se ...

  6. Spark SQL源代码分析之核心流程

    /** Spark SQL源代码分析系列文章*/ 自从去年Spark Submit 2013 Michael Armbrust分享了他的Catalyst,到至今1年多了,Spark SQL的贡献者从几 ...

  7. Monkey源代码分析之执行流程

    在<MonkeyRunner源代码分析之与Android设备通讯方式>中.我们谈及到MonkeyRunner控制目标android设备有多种方法.当中之中的一个就是在目标机器启动一个mon ...

  8. HBase源代码分析之HRegion上MemStore的flsuh流程(一)

    了解HBase架构的用户应该知道,HBase是一种基于LSM模型的分布式数据库.LSM的全称是Log-Structured Merge-Trees.即日志-结构化合并-树. 相比于Oracle普通索引 ...

  9. openVswitch(OVS)源代码分析之工作流程(数据包处理)

    上篇分析到数据包的收发,这篇开始着手分析数据包的处理问题.在openVswitch中数据包的处理是其核心技术,该技术分为三部分来实现:第一.根据skb数据包提取相关信息封装成key值:第二.根据提取到 ...

随机推荐

  1. vi命令用法

    从shell中启动可视化编辑器vi filename指示shell启动vi编辑器,并将参数filename传给它.如果当前目前中存在该文件,则vi编辑器将它解释为要打开的文件:如果没有该文件,则vi编 ...

  2. 排查sqoop报错:Error running child : java.lang.OutOfMemoryError: Java heap space

    报错栈: -- ::, INFO [main] org.apache.hadoop.mapred.MapTask: Processing split: = AND = -- ::, INFO [mai ...

  3. 角摩网发布在线制作Epub、Mobi格式的电子书

    原来cn的域名没有及时续约被人用了,现在用www.joymo.cc开始新的电子书制作之路. 目前支持Epub和Mobi格式,会陆续加入PDF和APK的电子书.

  4. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  5. Android -- 发送Broadcast、有序无序

    普通广播                                                                                     优缺点:和有序广播的优 ...

  6. .NET-使用NPOI组件将数据导出Excel-通用方法

    一.Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题:导出问题: 如果是asp.net,你 ...

  7. LIBSVM与LIBLINEAR

    对于多分类问题以及核函数的选取,以下经验规则可以借鉴: 如果如果特征数远远大于样本数的情况下,使用线性核就可以了. 如果特征数和样本数都很大,例如文档分类,一般使用线性核, LIBLINEAR比LIB ...

  8. 【pyhon】理想论坛单帖爬虫取得信息存入MySql数据库

    代码: # 单帖爬虫,用于爬取理想论坛单个帖子得到发帖人,发帖时间和回帖时间并存入数据库,url例子见main函数 from bs4 import BeautifulSoup import reque ...

  9. 用php编写我的第一段代码:hello world

    一.php环境的搭建 在编写php前,先搭建php环境,我选择了一站式安装软件WampServer,WampServer的下载地址:http://www.wampserver.com/ WampSer ...

  10. 通过源码浅析Java中的资源加载

    前提 最近在做一个基础组件项目刚好需要用到JDK中的资源加载,这里说到的资源包括类文件和其他静态资源,刚好需要重新补充一下类加载器和资源加载的相关知识,整理成一篇文章. 理解类的工作原理 这一节主要分 ...