设为首页 收藏本站
查看: 1024|回复: 0

[经验分享] 【原创】k8s源代码分析

[复制链接]

尚未签到

发表于 2018-1-5 21:41:24 | 显示全部楼层 |阅读模式
  本人空间链接http://user.qzone.qq.com/29185807/blog/1460015727
  源代码为k8s v1.1.1稳定版本号
  kubelet代码比較复杂。主要是由于其担负的任务比較多。以下我们将慢慢的分析
一、主要流程
1、main入口
  k8s.io\kubernetes\cmd\kubelet\kubelet.go
  依然是这样的风格的main
DSC0000.jpg

  继续看app
  NewKubeletServer 主要是一些參数的初始化
DSC0001.jpg

DSC0002.jpg

  然后在后面也有一些flag參数的获取,就不贴图了。
2、进入KubeletServer.Run
  代码比較长。其从整个Run代码来看,整个过程都是一个前期的准备工作。比方一些參数的准备。真正的执行还不是在这里。
DSC0003.jpg

  上面的代码中,准备了一个KubeletConfig。这个是基本的配置參数
DSC0004.jpg

  上面的代码中RunKubelet是下一个入口
DSC0005.jpg

  上面图中的代码就简单了不做解释
3、 RunKubelet
  代码太长,就截取当中比較重要的
  func RunKubelet(kcfg *KubeletConfig, builder KubeletBuilder) error {
DSC0006.jpg

  以上有个createAndInitKubelet,这个非常重要
  我们看看先
DSC0007.jpg

  从上面能够看到pc。有个NewMainKubelet
  以下进入startKubelet
DSC0008.jpg

  我们看到Kubelet.Run。这个才是真正的入口
4、Kubelet,真正入口
  k8s.io\kubernetes\pkg\kubelet\ kubelet.go
4.1、NewMainKubelet
  func NewMainKubelet(
DSC0009.jpg

  dockerclient初始化
DSC00010.jpg

  serviceLister 和nodeLister初始化(这个和前面几篇文章分析中的非常类似,详细里面就不再做分析了)
DSC00011.jpg

  containerGC
  imageManager
  diskSpaceManager
  statusManager
  readinessManager
  containerRefManager
  volumeManager
  oomWatcher
  我们看到了这么多的manager
DSC00012.jpg

  然后就是容器的类型,这里我们就看docker
  再接着
DSC00013.jpg

DSC00014.jpg

  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中运行的
DSC00015.jpg

  我们看到了熟悉的
  imageManager.Start()
  cadvisor.Start()
  containerManager.Start
DSC00016.jpg

  还有
  oomWatcher.Start
  updateRuntimeUp
  podKiller
  statusManager.Start()
  最后的kl.syncLoop(updates, kl)
  龚浩华
  qq 月牙寂 29185807
  2016年4月7日
  (版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。
  擅自转载的,保留追究其侵权的权利。
  )

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-432044-1-1.html 上篇帖子: containerdns配置说明 下篇帖子: Rancher+K8S部署手册
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表