【原创】k8s源码分析-----kubelet(1)主要流程
2016-04-07 16:10
1146 查看
本人空间链接http://user.qzone.qq.com/29185807/blog/1460015727
源码为k8s v1.1.1稳定版本
kubelet代码比较复杂,主要是因为其担负的任务比较多。下面我们将慢慢的分析
k8s.io\kubernetes\cmd\kubelet\kubelet.go
依旧是这种风格的main
继续看app
NewKubeletServer 主要是一些参数的初始化
然后在后面也有一些flag参数的获取,就不贴图了。
代码比较长。其从整个Run代码来看,整个过程都是一个前期的准备工作,比如一些参数的准备。真正的运行还不是在这里。
上面的代码中,准备了一个KubeletConfig,这个是主要的配置参数
上面的代码中RunKubelet是下一个入口
上面图中的代码就简单了不做解释
代码太长,就截取其中比较重要的
func RunKubelet(kcfg *KubeletConfig, builder KubeletBuilder) error {
以上有个createAndInitKubelet,这个很重要
我们看看先
从上面可以看到pc,有个NewMainKubelet
下面进入startKubelet
我们看到Kubelet.Run。这个才是真正的入口
k8s.io\kubernetes\pkg\kubelet\ kubelet.go
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。其构建的模块数量之多,也是其功能强大之处。
真正的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 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日
(版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)
相关文章推荐
- android ViewPager切换带切换效果
- [剑指offer]求和1+2+3+....n
- 解读STL的string类中各方法的使用场景
- bzoj1927: [Sdoi2010]星际竞速
- stale event(socket的过期事件问题)
- 计步器界面设计期中作业-17
- django + ngxin + uwsgi 站点部署
- IOS Runtime-初识runtime(一)
- 让 BAT 的 Offer 不再难拿
- redis
- sql server创建复合主键的2种方法
- css样式控制div内容垂直居中
- 使用对话框时出现window leaked的解决办法
- 【bzoj 2433】【NOI 2011】 智能车比赛 题意&题解&代码(C++)
- [剑指offer]约瑟夫环
- C++封装继承多态总结
- 支付宝公钥和商户私钥
- Hbase-0.96.2全然分布式安装部署
- Android - FrameLayout覆盖顺序
- 画图解释 SQL Join 语句