k8s源码地址:
https://github.com/kubernetes/kubernetes
如图:
k8s的组件:
-
kubectl k8s CLI 工具
-
client-go API接口, k8s系统其他组件与k8s api service的通信也是使用的client-go
-
kube-apiserver api服务
-
manager 管理控制器, 包含pod, rc, deployment, namspece, serviceaccount等
-
scheduler调度
-
kubelet 管理节点, 创建资源等
-
kube-proxy 代理, 转换
k8s源码拥有非常多的目录及文件, 要阅读源码,抓住主要的进行阅读即可.
例如: build, logo等暂时不用阅读.
主要目录如下:
cmd 命令接口, 执行文件代码入口, 服务注册入口, 每个执行文件都有一个main函数 |
pkg 核心代码 |
plugin 插件文件, 例如认证授权等 |
staging 部分核心代码暂存库 |
vendor 存放项目依赖的库代码 |
api openapi 的spec文件,定义等 |
main初始化过程一般为:
rand.Seed 随机数 – > new command --> init log --> Execute 执行命令