kubelet启动流程

 
  
kubelet启动流程
func main() {

    runtime.GOMAXPROCS(runtime.NumCPU())//多核cpu,增加系统吞吐量

    s := options.NewKubeletServer()   //新建一个kubeletserver对象,kubeletserver结构体

    s.AddFlags(pflag.CommandLine)   //添加用户命令行输入

    util.InitFlags()  // 解析并格式化传入的参数,填充kubeletserver结构体

    util.InitLogs()   //  初始化log配置

    defer util.FlushLogs()  //延迟函数,保证了kubeletserver异常崩溃时能够将内存中的log信息保存到磁盘文件中

    verflag.PrintAndExitIfRequested()

    if err := app.Run(s, nil); err != nil {   //run运行kubelet,

        fmt.Fprintf(os.Stderr, "%v\n", err)

        os.Exit(1)

    }

}

kubelet run流程
1.初始化配置读取认证文件,认证
2.加载kubeconfig文件
3.CreateAPIServer
4.InitCloudProvider初始化IaaS
5.初始化CAdvisorInterface 
6.初始化
ContainerManager
7.cAdvisor获取node节点信息
8.配置docker路径 Using root directory:
9.设置进程的oom_adj参数

运行RunKubelet 
1.获取hostname
2.发送事情到apiserver  Sending   events   to   api   server.把自己的事件通知apiserver 
3.获取nodelist  servicelsit podlist
4.watch node pod service
5.注册证书
6.加载存储插件
7.向apiserver注册节点信息  registerWithApiserver Attempting to register node node3
8.CreateAndInitKubelet . makePodSourceConfig  //创建pod source对象  
9.监测Watching apiserver
10.开启垃圾回收协程
启动kubelet  startKubelet
 1.start   the   kubelet   //处理podsource的pod update消息
 2. start   the   kubelet server
循环get put node状态status

你可能感兴趣的:(kubernetes)