k8s源码分析1-阅读源码准备工作
准备工作
找个合适的ide
- 比如goland
下载k8s源码
项目地址
- https://github.com/kubernetes/kubernetes
- 可以git下载,也可以下载zip包,还可以go get 下载
git clone https://github.com/kubernetes/kubernetes.git
本教程基于k8s 1.21 版本
k8s组件代码仓库地址(选择下载)
各个组件仓库地址
k8s.io/api
k8s.io/apiextensions-apiserver
k8s.io/apimachinery
k8s.io/apiserver
k8s.io/cli-runtime
k8s.io/client-go
k8s.io/cloud-provider
k8s.io/cluster-bootstrap
k8s.io/code-generator
k8s.io/component-base
k8s.io/controller-manager
k8s.io/cri-api
k8s.io/csi-api
k8s.io/csi-translation-lib
k8s.io/kube-aggregator
k8s.io/kube-controller-manager
k8s.io/kube-proxy
k8s.io/kube-scheduler
k8s.io/kubectl
k8s.io/kubelet
k8s.io/legacy-cloud-providers
k8s.io/metrics
k8s.io/mount-utils
k8s.io/pod-security-admission
k8s.io/sample-apiserver
k8s.io/sample-cli-plugin
k8s.io/sample-controller
go get 下载路径 k8s.io/xxxx
- 举例 :go get -d k8s.io/kube-controller-manager
阅读源码的注意事项
先理解功能
- 首先理解某一项功能,带着功能去看源码事半功倍,在某些晦涩难懂的地方还可以根据功能的实现反推代码目的
换位思考,如果你实现怎么做
- 可以时长反问自己,如果是你来实现这里怎么做
假设某一块方法去掉,会有什么效果
- 遇到不好理解的方法或者模块时,思考为什么要加这个,去掉会有什么问题就可以更好的理解
多看架构图,多总结
如对您有帮助,支持下呗!
微信
支付宝