二、关键流程代码走读

到底做了什么?
文章目录2.2.3join
一、介绍
二、关键流程代码走读
首先使用cobra命令行工具为绑定
关于cobra的使用请参考net-tools工具的实现过程 //net-tools
代码位置:
在下面绑定11个子命令与一个other flag
2.1init
总体介绍
?、pre--check阶段
在做出变更前运??系列的预检项来验证系统状态 。?些检查项?仅仅触发警告,其它的则会被视为错误并且退出,除?问题得到解决或者?户指定了 ----= 参数 。
?先,检查我们是否与其他前检查分开独?存在,因为分为好?个go?件,还有join以及reset,,当然这是针对代码?件的检查然后紧接着就是检查的?录,?家都清楚默认组件都是使?的cpu核?的检查,最低2核?,如果你的节点就1cpu,–--=进?忽略 内存的检查,最低2G,内存也是?样,当然过少的cpu内存,对跑应?会不够你还需要知道 或,所以你需要 确保它们与通过安装的控制平?的版本相匹配 。如果不这样做,则存在发?版本偏差的?险,可能会导致?些预料之外的错误和问题检查是启?还是激活 。如果是这样会告诉你输出报错信息,防?墙处于活动状态,请确保端?已打开,否则您的群集可能?法正常运?打开的端?的检查如果在系统上找不到镜像,则将提取需要的镜像,另外还增加对、,容器运?时镜像列表做了判断,通过是?于处理容器运?时的CRI接?,判断?的运?时环境,并获取需要的镜像列表
https://github.com/kubernetes/kubernetes/blob/e6b4fa381152d66ebace4dfd837add5275fd8e1e/cmd/kubeadm/app/cmd/phases/init/preflight.go#L38
二、certs阶段
?成?个?签名的 CA 证书来为集群中的每?个组件建?身份标识 。?户可以通过将其放? --cert-dir 配置的证书?录中(默认为 /etc//pki)来提供他们??的 CA 证书以及/或者密钥 。证书将为任何 ----sans 参数值提供附加的 SAN 条?,必要时将其?写
https://github.com/kubernetes/kubernetes/blob/e6b4fa381152d66ebace4dfd837add5275fd8e1e/cmd/kubeadm/app/cmd/phases/init/certs.go#L57
三、阶段
将?件写? /etc// ?录以便 、控制器管理器和调度器?来连接到 API 服务器,它们每?个都有??的身份标识,同时?成?个名为 admin.conf 的独?的?件,?于管理操作 。
https://github.com/kubernetes/kubernetes/blob/e6b4fa381152d66ebace4dfd837add5275fd8e1e/cmd/kubeadm/app/cmd/phases/init/kubeconfig.go#L64
四、阶段
将env的变量写?到/var/lib//-flags.env将配置配置写?到/var/lib//.yaml启动
https://github.com/kubernetes/kubernetes/blob/e6b4fa381152d66ebace4dfd837add5275fd8e1e/cmd/kubeadm/app/cmd/phases/init/kubelet.go#L38
五、阶段
为控制节点的组建创建静态pod的?录以及?成静态pod在/etc//下?
https://github.com/kubernetes/kubernetes/blob/e6b4fa381152d66ebace4dfd837add5275fd8e1e/cmd/kubeadm/app/cmd/phases/init/controlplane.go#L65
六、Etcd阶段
假使没有提供?个外部的 etcd 服务的话,也会为 etcd ?成?份额外的静态 Pod 清单?件
https://github.com/kubernetes/kubernetes/blob/e6b4fa381152d66ebace4dfd837add5275fd8e1e/cmd/kubeadm/app/cmd/phases/init/etcd.go#L44
七、阶段
会监视这个/etc//?录以便在系统启动的时候创建Pod,?旦控制平?的 Pod 都运?起来,init 的?作流程就继续往下执? 。
https://github.com/kubernetes/kubernetes/blob/e6b4fa381152d66ebace4dfd837add5275fd8e1e/cmd/kubeadm/app/cmd/phases/init/waitcontrolplane.go#L66
了解了init中的七个流程,相信你对 init执行的过程有了一个大概的框架,下面是代码走读部分,Let s GO!
2.1.1 使用cobra给init绑定flag
的具体实现,init
接着往下看,这??来传递附带的参数,我们可以找到对应的如何传?的