k8s源码分析准备工作

    1. 测试环境搭建-三节点

    看k8s源码的这些日子里遇到过不少困难,前前后后掉过不少坑,有些经验分享给大家:

    • 广度优先,大项目一般有很好的层级结构,从高层理解项目的逻辑,再一层一层深入。说个简单的例子,找到main函数后发现main只有10行代码,这时候看完十行代码你得认为自己看完了。确实已经看完了整个流程呀,只是没有深入main里面调用到的几个函数嘛,但是看函数名就知道这个函数的作用了,不知道实现而已。ok,这就是第一遍;然后深入下一层;再举个例子,看调度器的时候第一遍过源码不跟到具体的调度算法,深度优先就陷进去了。第一次应该看整体框架逻辑,找到调用预选、优选代码的入口,知道这个函数完成整个预选过程,就往下继续走。这样一遍过完后心里就有调度器的架子了。然后深入预选逻辑,再看优选逻辑。接着可以看具体的实现算法,可以看调度算法是怎么注册的,怎么初始化的。如果你一开始纠结于调度器如何初始化,可能会很痛苦。广度优先,好好体会。
    • 遇到问题先思考,尤其语言层面的问题要能够自己通过网上资料解决。不愿意静下心多思考是肯定看不完k8s的。假如k8s换成C语言实现,涉及到的语言层面的技巧就变了,但是k8s要解决的问题还是一样的,还是一样的思想,一样的流程,这些语言无关的技巧才是k8s特有的,我觉得这才是重点关注的地方。而类似无缓存channel和有缓存channel区别这类问题,配置文件怎么生效这类问题,可以说都和k8s本身无关。
    • 把学到知识,提升技能作为目的;把看完源码作为结果。一味追求速度很快就会发现看不下去了,身心疲惫。