说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。
申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。
龚浩华,QQ 29185807,月牙寂 道长
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
接着上一篇。
我们回到k8s.io\kubernetes\pkg\master\master.go
func (m *Master) init(c *Config) {
从代码里看,里面生成了很多storage,podstorage,eventstorage,nodestorage
然后在master的storage变量中注册了这些storage,其实这些就是restful的路由,但还不是restful的路由格式。
那么这些路由是在哪里注册的呢
我们继续往下看代码
还是init函数中,我们看到了api_v1().InstallREST。这里面就是将storage的路由转换成restful的路由,并注册到handlercontainer中
另外底下还有个extensions的InstallREST
我们现在回过头去看看,有两个重要的变量mux,handlerContainer
这两个变量是在master初始化的时候赋值的(函数为New)
并且将mux与container挂钩
我们回到init。
我们看到在api注册完了之后,就是初始化handler(http的handler),其实handler就是上文提到的mux
master的初始化已经完了,现在我们要回到k8s.io\kubernetes\cmd\kube-apiserver\app\server.go 的Run函数中继续往下。
在Run函数末尾,能够很清晰的看到 master中的handle与httpserver挂钩。至此一个httpserver便启动了