博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】k8s源码分析-----kubelet(1)主要流程
阅读量:4034 次
发布时间:2019-05-24

本文共 1520 字,大约阅读时间需要 5 分钟。

 

本人空间链接

源码为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日

(版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)

如果你觉得本文对你有帮助,可以转到你的朋友圈,让更多人一起学习。

第一时间获取文章,可以关注本人公众号:月牙寂道长,也可以扫码关注

 

你可能感兴趣的文章
centos 7 上配置dnsmasq 同时支持ipv4和ipv6的DHCP服务
查看>>
AsyncTask、View.post(Runnable)、ViewTreeObserver三种方式总结frame animation自动启动
查看>>
Android中AsyncTask的简单用法
查看>>
S3C6410启动模式介绍
查看>>
Jlink + ADS调试 S3C2440
查看>>
2440初始化存储器原理(接上一篇)
查看>>
S3C2440 USB 设备控制器(转)
查看>>
Linux usb 设备驱动 (1)
查看>>
解决跨网场景下,CAS重定向无法登录的问题(无需修改现有代码)
查看>>
java反编译命令
查看>>
activemq依赖包获取
查看>>
概念区别
查看>>
关于静态块、静态属性、构造块、构造方法的执行顺序
查看>>
final 的作用
查看>>
在Idea中使用Eclipse编译器
查看>>
idea讲web项目部署到tomcat,热部署
查看>>
优化IDEA启动速度,快了好多。后面有什么优化点,会继续往里面添加
查看>>
JMeter 保持sessionId
查看>>
IDEA Properties中文unicode转码问题
查看>>
Idea下安装Lombok插件
查看>>