100 - k8s源码分析-准备工做

今天咱们开始讲kubernetes的源码!git

以前的其余开源项目尚未说完,后续会陆陆续续更新,咱们把主线先放到k8s的源码上。github

以前我想详细讲解每一行k8s源码,可是越看愈加现一个大型开源项目若是拘泥于每一行的逻辑,很容易把战线拉得太长,最后失去兴趣。因此今天咱们先聊聊源码该怎么看。golang

一、目标

咱们为何要看k8s源码?api

我认为无非是提高golang功力、深刻k8s原理、参与k8s社区,最后成为一个资深的云计算技术人,享受技术的乐趣(固然云计算技术栈之大不是一个k8s所能表明的,可是显然云计算已经离不开k8s,有能力参与k8s社区的工程师后续继续深刻各类cncf技术也会轻松不少,cncf里涉及的各类技术基本奠基了paas,或者说容器云的基础)。架构

 

二、方法

第一步:熟悉k8s的基本功能,理解各个组件的分工,作到心中有数,可是不拘泥于掌握每个功能细节,由于不少特性在平常开发中很难用到(好比各类alpha阶段的api,生产中不会让用的)。学习

第二步:选定第一个要深刻研究的组件,概览其支持的全部子命令和flag,知道该组件能实现哪些功能(知道基于什么实现,和哪些组件打交道),好比看kube-proxy至少先知道是用iptables实现的,得先补补iptables的知识。测试

第三步:选定源码版本,不要追求master分支,每天变想一想也心累啊!建议选一个相对新的,或者是大家公司正在使用的版本云计算

第四步:准备编译、测试环境。也就是一个至少可以把你看的组件编译出来,可以运行起来后debug的环境,这样才能在debug中看各类你在读源码时不理解的对象在运行中到底存了哪些数据。debug

第五步:最快的速度抓住代码主线,泛读源码。调试

第六步:针对特定功能精读,调试,深刻理解。

第七步:总体精读,适当深刻三方库,公共库,绘制整理单个组件架构图、流程图等,帮助本身理解整个组件工做全流程,在平时使用中遇到bug后可以快速反应过来是哪一个模块的问题。

最后:读完全部组件后融会贯通,理解各类公共库的抽取逻辑,整个k8s了然于胸!

 

今天准备啥?

咱们选择从1.10版本入手,一方面是目前1.9及以前版本的资料比较多,1.10是不久的未来资料会比较丰富,用户基数比较多的一个版本,因此等到多数人看到本教程的时候,有不懂的地方到网上查时相对1.12这种新版会更轻松。另外是咱们在项目中选型用了1.10版本,在近一两年工做中我主要使用的也是1.10版本(固然社区新特性会关注,参与社区也是跟着master走)。

今天咱们须要下载好1.10版本的源码,准备go开发环境。

->下代码:

$ git clone https://github.com/kubernetes/kubernetes.git

->本地路径:

$ D:\go\src\k8s.io\kubernetes

->gopath:

$ D:\go\src

ok,go开发环境配置默认你们都是会的,否则也不适合开始后面的学习。

kubernetes的编译和debug环境后面咱们再准备,下一讲咱们先开始过scheduler组件的逻辑,熟悉代码后再准备环境开始debug。

 

相关文章
相关标签/搜索