k8s源码分析-----kubelet(1)主要流程

说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。

申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。

龚浩华,QQ 29185807,月牙寂 道长

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阮一峰的网络日志

SASS用法指南

学过CSS的人都知道,它不是一种编程语言。 你可以用它开发网页样式,但是没法用它编程。也就是说,CSS基本上是设计师的工具,不是程序员的工具。在程序员眼里,CS...

3345
来自专栏一只程序汪的自我修养

使用requirejs编写模块化代码

1455
来自专栏GopherCoder

『Swagger 上手』

1847
来自专栏更流畅、简洁的软件开发方式

我的网站的结构说明

不知道大家有没有看懂这个图。这个是我的网站(不包括后台管理)的结构图。基本上和三层架构有些相似,但是有三个不同的地方:    一、 数据访问层。 1、数据访问层...

1728
来自专栏九彩拼盘的叨叨叨

CSS拓展语言:Sass介绍

CSS拓展语言出现的原因是,CSS自身支持的功能能有限(如不支持变量,条件控制,循环等编程元素),并不满足我们想要的一些功能。而CSS拓展语言支持CSS不支持的...

642
来自专栏编程直播室

使用Ionic2开发Todo应用0 开始之前1 创建新的Ionic 2工程2. 设置主页(Home page)3 持久化数据保存4 总结

2115
来自专栏java架构师

跨域请求数据解决方案整理

跨域请求数据解决方案主要有如下解决方法: JSONP方式 表单POST方式 服务器代理 Html5的XDomainRequest Flash request 分...

2967
来自专栏跟着阿笨一起玩NET

TreeComboBox控件范例

本文转载:http://www.cnblogs.com/hoodlum1980/archive/2008/01/30/1058140.html

452
来自专栏xingoo, 一个梦想做发明家的程序员

【插件开发】—— 4 SWT编程须知

  根据前两篇博文,应该对插件开发有所了解。 前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图   S...

1915
来自专栏xingoo, 一个梦想做发明家的程序员

【AngularJS】—— 3 我的第一个AngularJS小程序

通过前面两篇的学习,基本上对AngularJS的使用有了一定的了解。 本篇将会自己手动写一个小程序,巩固下理解。   首先要注意的是,引用Angular...

2426

扫码关注云+社区