kubelet启动流程

来源:互联网 发布:无线网络转换有线网络 编辑:程序博客网 时间:2024/06/05 06:43
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

1 0
原创粉丝点击