【原创】k8s源码分析------kube-apiserver分析(2)
2016-03-18 14:16
423 查看
由本人空间转过来,空间地址http://user.qzone.qq.com/29185807/blog/1458270203
接着上一篇。
我们回到k8s.io\kubernetes\pkg\master\master.go
func (m *Master) init(c *Config) {
从代码里看,里面生成了很多storage,podstorage,eventstorage,nodestorage
![](http://img.blog.csdn.net/20160323165928664?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后在master的storage变量中注册了这些storage,其实这些就是restful的路由,但还不是restful的路由格式。
![](http://img.blog.csdn.net/20160323165942273?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
那么这些路由是在哪里注册的呢
我们继续往下看代码
还是init函数中,我们看到了api_v1().InstallREST。这里面就是将storage的路由转换成restful的路由,并注册到handlercontainer中
![](http://img.blog.csdn.net/20160323165957430?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
另外底下还有个extensions的InstallREST
![](http://img.blog.csdn.net/20160323170015457?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
我们现在回过头去看看,有两个重要的变量mux,handlerContainer
这两个变量是在master初始化的时候赋值的(函数为New)
![](http://img.blog.csdn.net/20160323170041056?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
并且将mux与container挂钩
![](http://img.blog.csdn.net/20160323170056884?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
我们回到init。
我们看到在api注册完了之后,就是初始化handler(http的handler),其实handler就是上文提到的mux
![](http://img.blog.csdn.net/20160323170113556?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
master的初始化已经完了,现在我们要回到k8s.io\kubernetes\cmd\kube-apiserver\app\server.go
的Run函数中继续往下。
在Run函数末尾,能够很清晰的看到 master中的handle与httpserver挂钩。至此一个httpserver便启动了
![](http://img.blog.csdn.net/20160323170126838?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
龚浩华
qq 月牙寂 29185807
2016年3月18日
(版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)
接着上一篇。
我们回到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便启动了
龚浩华
qq 月牙寂 29185807
2016年3月18日
(版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)
相关文章推荐
- python高级
- Java内部类详解
- 字符串分割--java中String.split()用法
- DB2数据的导入(Import) 导出(Export)(Load)
- 世界的潜规则,每周保证读2遍,自省。
- 文章标题
- 软件测试——Junit的使用
- 小米3Android开发学习笔记三
- Android设备适配图文说明
- 关于Android沉浸栏的实现
- 自己写的计算群论工具
- mybatis常用jdbcType数据类型
- 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
- 为什么 Java 只有值传递,但 C# 既有值传递,又有引用传递,这种语言设计有哪些好处?
- 商业智能SAAS走向中小企业
- CocoaPods 安装流程
- java入门笔记Ⅵ
- DB2 export详解
- css3属性-webkit-font-smoothing
- Swift-2.10属性