kubernetes的kube-apiserver组件源码分析

1 apiserver模块main函数

func main(){

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


   rand.Seed(time.Now().UTC().UnixNano())

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

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


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

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

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

   verflag.PrintAndExitIfRequested()

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

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

       os.Exit(1)

   }

}

2  APIServer数据结构

APIServer结构体存放apiserver使用到的各种参数。InsecurePortSecurePortEtcdPathPrefixetcd中所有资源前缀,默认


是”/registry”EnableLogsSupportMasterServiceNamespace:默认是”default”,ClusterName集群中实例的前缀,默认


是”kubernetes”,变量CertDirectory表示TLS认证目录,默认是”/var/run/kubernetes”,这个目录中会存放TLS证书文件和TLS私钥文


件,用于两个应用程序之间提供保密性和数据完整性。


Master结构体,这个结构体存放kubernetesmaster节点中apiserver信息。Master结构体中用到了第三方组件etcd,将kubernetes


podservice等信息注册到etcd中,实现这些信息的数据持久化。


3  执行流程

1verifyClusterIPFlags(s验证clusterIP参数


2、配置AdvertiseAddress参数(没有指定的话使用HostIP


3验证--etcd-servers参数


4    资源限额配置


5、初始化CloudProvider


6、创建kubeletclient对象(只用于kubelet的健康检查)


7、创建restclient对象


8newEtcd()方法创建访问etcdserver的客户端


9authenticator(鉴权)、authorizer(授权)、admissionController(准入许可)


10、获取配置ExternalHost


11、构造masterconfig结构,生成一个master实例。各种api请求最后都是通过master对象来处理的。


12、开始监听客户端请求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值