【原创】k8s源代码分析-----kubelet(1)主要流程
本人空间链接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)主要流程的更多相关文章
- 【原创】k8s源代码分析-----kubelet(8)pod管理
本文QQ空间链接:http://user.qzone.qq.com/29185807/blog/1460540474 本文csdn博客链接:http://blog.csdn.net/screscent ...
- kubernetes/k8s CRI分析-kubelet删除pod分析
关联博客<kubernetes/k8s CRI 分析-容器运行时接口分析> <kubernetes/k8s CRI分析-kubelet创建pod分析> 之前的博文先对 CRI ...
- kubernetes/k8s CRI分析-kubelet创建pod分析
先来简单回顾上一篇博客<kubernetes/k8s CRI 分析-容器运行时接口分析>的内容. 上篇博文先对 CRI 做了介绍,然后对 kubelet CRI 相关源码包括 kubele ...
- 【原创】k8s源代码分析-----EndpointController
转自本人空间 http://user.qzone.qq.com/29185807/blog/1459325937 一.controller manager创建endpointController 代码 ...
- memcached源代码分析-----set命令处理流程
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/44236591 前一篇博文以get命令为样例把整个处理流程简单讲述了一遍.本篇博文将以se ...
- Spark SQL源代码分析之核心流程
/** Spark SQL源代码分析系列文章*/ 自从去年Spark Submit 2013 Michael Armbrust分享了他的Catalyst,到至今1年多了,Spark SQL的贡献者从几 ...
- Monkey源代码分析之执行流程
在<MonkeyRunner源代码分析之与Android设备通讯方式>中.我们谈及到MonkeyRunner控制目标android设备有多种方法.当中之中的一个就是在目标机器启动一个mon ...
- HBase源代码分析之HRegion上MemStore的flsuh流程(一)
了解HBase架构的用户应该知道,HBase是一种基于LSM模型的分布式数据库.LSM的全称是Log-Structured Merge-Trees.即日志-结构化合并-树. 相比于Oracle普通索引 ...
- openVswitch(OVS)源代码分析之工作流程(数据包处理)
上篇分析到数据包的收发,这篇开始着手分析数据包的处理问题.在openVswitch中数据包的处理是其核心技术,该技术分为三部分来实现:第一.根据skb数据包提取相关信息封装成key值:第二.根据提取到 ...
随机推荐
- Apache Mahout 简介 通过可伸缩、商业友好的机器学习来构建智能应用程序
在信息时代,公司和个人的成功越来越依赖于迅速有效地将大量数据转化为可操作的信息.无论是每天处理数以千计的个人电子邮件消息,还是从海量博客文章中推测用户的意图,都需要使用一些工具来组织和增强数据. 这其 ...
- 在Spark程序中使用压缩
当大片连续区域进行数据存储并且存储区域中数据重复性高的状况下,数据适合进行压缩.数组或者对象序列化后的数据块可以考虑压缩.所以序列化后的数据可以压缩,使数据紧缩,减少空间开销. 1. Spark对压缩 ...
- HDU1411++几何+四面体体积
公式题... 自己闲的用cos sin推出个公式 还不知道对不对,明天补上.. #include<stdio.h> #include<math.h> #include<i ...
- django 基础知识回顾
内容回顾: 1. ajax参数 url: type: data: 1.value不能是字典 {k1:'v1',k2:[1,2,3,],k3; JSON.string} 2.$('').serilize ...
- 学习笔记4-Action参数绑定
参数绑定功能默认是开启的,其原理是把URL中的参数(不包括模块.控制器和操作名)和操作方法中的参数进行绑定. 要启用参数绑定功能,首先确保你开启了URL_PARAMS_BIND设置: 'URL_PAR ...
- Oracle日期周具体解释以及周開始结束时间计算
1 ORACLE中周相关知识描写叙述 1.1 日期格式化函数 TO_CHAR(X [,FORMAT]):将X按FORMAT格式转换成字符串. X是一个日期,FORMAT是一个规定了 ...
- 使用apache-cxf-2.2.10来制作一个极简版WebService程序
原想拿最新版cxf来制作的,无奈Apache的zip包总下不下来,国内的apache-cxf-2.2.10却一蹴而就,也就用了这个版本.下载地址是:http://pan.baidu.com/s/1td ...
- Html中的次方符号怎么写
代码: <p>1.01<sup>365</sup>=37.783,0.99<sup>365</sup>=0.025</p> 效果 ...
- Discuz常见小问题-如何禁止用户发言,快速删除某个用户的所有帖子
用户-用户组,勾选批量编辑,然后点击批量编辑的链接 点击论坛相关-帖子相关,然后把指定用户组的允许发新话题设置为否,拉到底部,点击提交 以一个普通用户重新登录,尝试发帖报错,说明已经设置成功 ...
- windows下安装msysgit 及ruby
一:安装msysgit git是目前最流行的软件版本控制软件,在window下通常使用msysgit 下载:http://msysgit.github.io/ 安装:基本上一路默认下一步就行 安装之后 ...